2012-04-23 75 views
0

我试图创建一个中文网页,我意识到,虽然文本看起来很好,但是当我在浏览器上运行它时,一旦我更改了字符编码,文本就会变成乱码。以下是发生了什么:关于中文编码的问题

  1. 我在Emacs中创建我的html文件,以UTF-8编码。
  2. 我将它上传到服务器,并在我的浏览器(FF,IE,Chrome,Opera)上查看 - 没问题。
  3. 我尝试通过FF> View> Character Encoding>其他编码查看页面。所有这些不同的中文编码系统,例如简体中文(HZ)
  4. 除了UTF-8之外,在其他所有编码中,文本都变成乱码。

我假设这不是一个问题 - 即浏览器足够聪明,知道该页面在哪个编码,并准确解析内容。我想知道的是,为什么我改变编码后不能再阅读中文文本 - 是因为我没有在我的操作系统上安装中文字体?如果我的听众是中国人,我应该坚持使用UTF-8吗?还是应该在众多编码系统中选择一种?

在此先感谢您的帮助/意见。

回答

2

UTF不是“全能”编码。它旨在包含易于使用的国际语言字符符号,但它仍然是编码,就像您选择的其他编码一样。您必须重新输入每种编码中的文本,才能在使用该编码查看时正确显示文本。

+0

重新键入文字?你是否说我应该创建单独的文件,每个文件都用不同的编码编写和保存?那么我如何决定要提供哪个文件? – anthonytwp 2012-04-24 10:40:35

+0

是的 - 但您应该遵循Agent_L的建议并在HTML中定义字符集编码,这将节省更多时间。如果你需要单独的文件,应该可以编写一个脚本来自动将UTF-8编码为需要支持的每一种其他编码,但是前瞻性地说,拥有相同内容的多个副本可能会成为维护的麻烦。 – MHTri 2012-04-24 11:28:49

+0

我认为他的意思是当客户端请求一个文件并在其他编码中明确要求它时。尽管可能,但现代浏览器不太可能不支持utf-8(对我而言,我/我们有偏见的知识)。 – 2012-04-24 15:57:44

2

查看器编码必须与正在读取的文件匹配。将UTF-8视为其他类似的东西,可以将.txt重命名为.exe并尝试运行它。

您应该在HTML中指定正确的编码。您在网络浏览器中使用的选项仅适用于Web开发人员搞砸他的工作并声明其他编码比实际使用的编码或在一个页面上混合了2种不同编码的极少数情况。

+1

是的,我也是这么想的,因为我从来没有任何问题查看我的网页 - 假定浏览器检测到我的编码。顺便说一句,“你应该指定正确的HTML编码”,你的意思是''对不对? – anthonytwp 2012-04-24 10:42:07

+0

对于HTML超过5的HTML,是或。如果有问题,请记住,服务器还声明编码在HTTP头中发送时。你的服务器的管理员应该知道如何解决这个问题 - 如果它被破坏了。你可以检查这些在例如。萤火虫。 – 2012-04-24 15:46:45

0

当然,在浏览器中更改编码将会“破坏”文本!浏览器正在使用UTF-8码点流,并尝试强制对原始数据进行另一种编码。不用说,结果并不美观。在浏览器中更改编码不等于转换。

正如您猜测的那样,现代浏览器通常会正确猜测 - 但并非总是如此。作为Agent_L确保在头文件中声明编码。