我应该从UTF-8更改为UTF-16以在我的HTML中容纳中文字符吗?

Aar*_*zar 9 html utf-8 utf-16

我正在使用ASP.NET MVC,MS SQL和IIS.我有一些用户在他们的个人资料信息中使用了中文字符.但是,当我显示此信息时显示为,æŽå¼·è¯但它们在我的数据库中是正确的.目前我的HTML页面的UTF设置为UTF-8.我应该把它改成UTF-16吗?我知道有一些问题可以来自于此,但我的选择是什么?

谢谢,

亚伦

Yuj*_*uji 23

UTF-8和UTF-16编码完全相同的字符集.并不是说UTF-8不包括中文字符和UTF-16.UTF-16统一使用16位来表示一个字符; 而UTF-8使用1,2,3,最多4个字节,具体取决于字符,因此ASCII字符仍然表示为1个字节.从这篇维基百科文章开始,了解它背后的想法.

因此,切换到UTF-16几乎没有机会帮助你.它有可能使事情变得更糟,正如你在上面提到的SO问题中所讨论的那样.您的设置中的其他位置存在问题,该问题未正确考虑非ASCII或非Latin-1字符.确保您的设置的每个部分都使用UTF-8.

  • UTF-16可以有2个代码单元,每个16位,总共32位代表一个字符,参见http://en.wikipedia.org/wiki/UTF-16中的一些例子 (3认同)
  • @yuji 实际上 UTF-8 最多可以使用 4 个字节。最初是 6,但在意识到这将是一种矫枉过正之后(我们今天只使用大约 110.000,而 6 字节将允许 20 亿!)人们选择了 4 字节 http://tools.ietf.org/html/rfc3629 (2认同)

jjr*_*jrv 5

任何UTF编码在表示Unicode字符的功能上都应该发挥相同的作用,因此切换到UTF-16将无济于事。某个地方存在编码问题,对于UTF-16,您只会得到不同的错误HTML表示形式。当然,如果您有一些仅将非ASCII字符编码为实体并支持宽字符的库,则可以通过开关解决问题。但是,有些字符甚至需要2个宽字符,尽管用户可能很少注意到,但这些字符仍会显示错误。最好的选择是让产生HTML的内容正确地解释您的UTF-8。