【问题标题】:Inconsistent display of unicode characters on web pages网页上 unicode 字符的显示不一致
【发布时间】:2013-12-05 08:59:19
【问题描述】:

我有一个 C 程序,它输出一些数据,包括 unicode 非英文字符。它在 Windows 7 命令窗口、Linux telnet 会话中运行良好,但用于填充 ASP/html 页面上的标签字段,它并非在所有情况下都有效 - 运行 Web 服务器的平台似乎会影响输出.

我有一台运行 Windows XP SP3 的机器,该程序在命令窗口中运行良好,但在网页中字符错误。例如Ø 显示为 Ï。

如果 Web 服务器位于 Windows 7 和 Server 2003 SP2 上,则该网页可以正常工作。网络浏览器的选择没有区别。

【问题讨论】:

  • HTML页面中是否指定字符编码?
  • 您应该包含可用于重现问题的代码,或演示 HTML 文档及其 HTTP 标头,可能还有 URL。

标签: asp.net c unicode


【解决方案1】:

问题可能是character encoding之一。

可以在每个页面中指定字符编码,也可以在网络服务器中设置默认值。

Windows XP IIS 可能将 ISO-8859-1 作为默认字符集。 您可以通过配置 IIS 或通过在每个 HTML 页面中指定字符集来更改它。

【讨论】:

  • 谢谢克拉斯。我唯一能找到编码设置的地方是 ASP.Net/Application/Globalization,这对于 XP 和 Windows Server 2003 框是相同的。 web.config文件也一样。
【解决方案2】:

当 Ø (U+00D8) 显示为 Ï (U+00CF) 时,可能的解释是 HTML 页面采用 ISO-8859-1 或 Windows-1252 编码,但浏览器将其解释为 CP 850 编码。在浏览器中使用 View → Encoding 进行检查(它将显示当前用于解释页面的编码,您可以将其更改为 Windows-1252,它以某个名称存在(如“西欧 (Windows)”) . – 还有其他一些encodings,其中字节0xD8 被解释为Ï。

如果这是正确的解释,即使不是,请检查页面的 actualdeclared 字符编码并确保它们匹配。请参阅 W3C 页面 Character encodings.

【讨论】:

  • 谢谢尤卡。不确定这是否正确,因为我可以使用相同的浏览器使用相同的服务器代码 + 网页与两个不同的 Web 服务器通信,并获得两个不同的结果。所以看起来更有可能是 IIS 设置。但是它们在 XP 和 Server 2003 机器上看起来是一样的 :(。无论如何,根据 Firefox,两者的编码都是 UTF-8。
  • 嗯,如果我将编码设置为 ISO-8859-1 或 Windows-1252,我会得到 Ã。
  • 请注意我作为对原始问题的评论发送的澄清请求。猜测很有趣,但如果你发布了足够的数据,你会更快地得到可靠的答案。如果不同的浏览器以这种方式显示页面不同,那么很可能页面没有正确声明字符编码,这是首先要解决的问题。
  • 谢谢 Jukka,因为我只维护代码来确定什么是相关的,这有点棘手。大多数页面似乎都有一个 resx 文件,顶部有 encoding="utf-8" 。有问题的页面没有 resx,所以也许我会创建一个空文件,看看会发生什么。感谢您的耐心等待。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 2011-07-18
  • 1970-01-01
  • 2023-04-01
  • 2013-12-03
  • 1970-01-01
相关资源
最近更新 更多