从UTF-8切换到UTF-16的HTML编码可能会出现什么问题?

7

从UTF-8转换为UTF-16对HTML编码有什么影响?我想知道您对这个问题的看法。在做出这样的改变之前,我需要考虑哪些事情吗?

注意:由于需要处理大量的日语和中文文本而感兴趣。


2
为什么要改变呢?UTF-16需要16位来表示每个字符,而UTF-8只需要从U+0080开始的16位。因此,每个ASCII字符都会像ASCII一样被编码。 - Gumbo
6个回答

10

我能想到几个可能会出现的问题:

  1. 你必须在HTTP头中指定它是UTF-16。与UTF-8不同,UTF-16不兼容ASCII,这意味着从一开始所有内容都需要使用UTF-16。
  2. 旧版客户端不支持UTF-16。例如,任何运行Windows 9x的设备。可能Mac OS9也是如此。
  3. 哦,等等,我差点忘了:北美和欧洲的Windows XP副本不默认安装亚洲字体。

8
这个问题与字符编码是否为UTF-8或UTF-16无关。 - JacquesB
1
真的,但我认为只要我列出问题就可以了。 - Powerlord
3
当然,这些内容中有一些在2017年已经不像我最初在2009年写作时那么相关了。 - Powerlord

8
  • 假设你的大部分HTML是ASCII,你的带宽消耗可能将近翻倍。
  • 那些错误地假定为UTF-8(或ASCII)的客户端会感到困惑。

你为什么想要改变为UTF-16呢?


或者带宽消耗几乎减半。 - JacquesB
1
是的,如果你的大部分HTML是非ASCII字符集的话。当然,考虑到HTML标签和属性名称本身是ASCII字符集,它必须包含良好的“内容到标记”的比例。 - Jon Skeet
2
OP提到了大量的中文和日文文本,但标记确实是个好点子。 - JacquesB
1
啊 - 添加中文和日文文本之后,我已经回答了 :) - Jon Skeet

4

还有一个与8位以上数据相关的问题是字节顺序。UTF编码文件以字节顺序标记开头,用于确定该文件的字节顺序或字节序。

维基百科对此有很好的解释。


3
非常好的文章!基本原则规定:“如果需要使用唯一字符编码,则必须使用UTF-8、UTF-16或UTF-32字符编码。US-ASCII与UTF-8向上兼容(US-ASCII字符串也是UTF-8字符串,请参见[RFC 3629]),因此如果需要与US-ASCII兼容,则应使用UTF-8。”实际上,与US-ASCII兼容非常有用,几乎是必需的。W3C明智地解释道:“在其他情况下,例如用于API,可能更适合使用UTF-16或UTF-32。选择其中一个的可能原因包括内部处理效率和与其他进程的互操作性。”

3
据我所知,所有现代浏览器都支持UTF-16编码。但是正如其他人指出的那样,您应该明确声明编码方式。并不是所有浏览器和平台都支持所有Unicode字符,但我认为这与您使用的编码方式无关。
然而,如果带宽是一个大问题,您应该考虑压缩HTML。这将比更改编码方式节省更多的带宽。

-6

我怀疑大多数浏览器甚至不会显示你的页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接