11

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

4

2 回答 2

28

UTF-8 和 UTF-16 编码完全相同的字符集。不是UTF-8不覆盖汉字,UTF-16有。UTF-16 统一使用 16 位来表示一个字符;而 UTF-8 使用 1、2、3,最多 4 个字节,具体取决于字符,因此 ASCII 字符仍然表示为 1 个字节。从这篇 Wikipedia 文章开始,了解它背后的想法。

因此,切换到 UTF-16 对您有帮助的可能性很小。正如您在上面链接的 SO 问题中所讨论的那样,它有可能使事情变得更糟。您的设置中的其他地方存在问题,它没有正确考虑非 ASCII 或非拉丁 1 字符。确保设置的每个部分都使用 UTF-8。

于 2010-10-05T14:59:47.073 回答
6

任何 UTF 编码在表示 Unicode 字符的能力上都应该相同,因此切换到 UTF-16 将无济于事。某处存在编码问题,使用 UTF-16,您最终只会得到不同的错误 HTML 表示。当然,如果您有一些库只是将非 ASCII 字符编码为实体并且确实支持宽字符,那么您的问题可能会通过开关解决。然而,有些字符甚至需要 2 个宽字符,这些字符仍然会显示错误,尽管用户可能很少注意到。最好的选择是让任何生成 HTML 的东西都能正确解释您的 UTF-8。

于 2010-10-05T14:56:04.530 回答