我正在使用ASP.NET MVC,MS SQL和IIS。我有一些用户在他们的个人资料信息中使用了中文字符。但是,当我显示此信息时显示为æŽå¼·è¯
但它们在我的数据库中是正确的。目前我的HTML页面的UTF设置为UTF-8。我应该把它改成UTF-16吗?我知道有few problems可以来自这个,但我的选择是什么?
谢谢,
亚伦
答案 0 :(得分:21)
UTF-8和UTF-16编码完全相同的字符集。并不是UTF-8不包括中文字符和UTF-16。 UTF-16统一使用16位来表示一个字符;而UTF-8使用1,2,3,最多4个字节,具体取决于字符,因此ASCII字符仍然表示为1个字节。 从this Wikipedia article开始,了解其背后的想法。
所以,切换到UTF-16几乎没有机会帮助你。它有可能使事情变得更糟,正如你在上面提到的SO问题中所讨论的那样。您的设置中的其他位置存在问题,该问题未正确考虑非ASCII或非Latin-1字符。确保您的设置的每个部分都以UTF-8工作。
答案 1 :(得分:4)
任何UTF编码在表示Unicode字符的能力方面都应该相同,因此切换到UTF-16无济于事。某处存在编码问题,使用UTF-16只会出现不同的错误HTML表示。当然,如果您有一些库只是将非ASCII字符编码为实体并且支持宽字符,那么您的问题可能会被交换机解决。然而,有些字符甚至需要2个宽字符,尽管用户可能很少注意到,但这些字符仍然显示错误。最好的选择是生成HTML以正确解释您的UTF-8。