我使用的是ASP.NET MVC,MS SQL和IIS。我有一些用户在他们的个人资料信息中使用了中文字符。但是,当我显示此信息时,它显示为æŽå¼·è¯
,但它们在我的数据库中是正确的。目前,我的HTML页面的UTF设置为UTF-8。我应该将其更改为UTF-16吗?我知道有一个few problems可以由此产生,但是我有什么选择呢?
发布于 2010-10-05 14:59:47
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或非拉丁-1字符。确保设置的每个部分都以UTF-8格式工作。
发布于 2010-10-05 14:56:05
任何UTF编码在表示Unicode字符的能力上都应该具有相同的功能,因此切换到UTF-16将无济于事。在某些地方存在编码问题,使用UTF-16只会得到不同的错误HTML表示。当然,如果您有一些库只将非ASCII字符编码为实体,并且确实支持宽字符,那么您的问题可能会通过开关来解决。然而,有些字符甚至需要2个宽字符,尽管用户可能很少注意到,但这些字符仍然会显示错误。最好的选择是让生成HTML的任何东西正确地解释您的UTF-8。
https://stackoverflow.com/questions/3864842
复制