【问题标题】:Web pages served by local IIS showing black diamonds with question marks本地 IIS 提供的网页显示带有问号的黑色菱形
【发布时间】:2019-03-15 19:40:30
【问题描述】:

我在 .NET 应用程序中遇到问题,在该应用程序中,由本地 IIS 提供的页面显示随机字符(主要是带有白色问号的黑色菱形)。这发生在 Chrome、Firefox 和 Edge 中。 IE 出于某种原因正确显示页面。

生产环境和较低的预生产环境中的相同页面可以在我所有的浏览器中使用。这完全是本地问题。

这是我尝试过的:

  • 删除代码并重新克隆(也尝试过切换分支)
  • 禁用所有浏览器扩展
  • 以隐身模式运行
  • 重启(你永远不知道)
  • 已删除临时 ASP.NET 文件
  • 在机器上寻找损坏的字体,但没有找到

其他信息:

  • 运行 IIS 10.0.17134.1
  • .NET MVC 应用程序与 Knockout

我知道还有其他几篇关于带问号的黑色钻石的帖子,但似乎都没有解决我的问题。

如果您需要更多信息,请告诉我。

感谢您的帮助!

【问题讨论】:

  • 页面是否使用编码? (内容类型标题或<meta charset= 元素)

标签: iis browser character-encoding localhost


【解决方案1】:

你很幸运。 � 的明确目的是表明字符编码被滥用。当用户看到这一点时,他们会知道我们搞砸了并丢失了他们的一些文本数据,并且我们会知道,在一个或多个点上,我们的处理和/或配置是错误的。

(字体不是问题[除非没有可用于渲染的字体�]。当没有可用于字符的字体时,通常将其渲染为白色填充的矩形。)

字符编码的基础很简单:使用足够的字符集(比如 Unicode),选择合适的编码(比如 UTF-8),用它对文本进行编码以获得字节,告诉每个程序和获取它们所代表的字节的人文本以及使用哪种编码。编码可以从标准、约定或规范中理解。

  • 您的编辑器执行实际编码。

  • 如果文件是项目或类似系统的一部分,则项目文件可能会存储项目中所有或每个文本文件的预期编码。如果您的编辑器是 IDE,它应该了解项目是如何做到的。

  • 你的编译器需要知道你给它的每个文本文件的编码。项目系统会传达它所知道的信息。

  • HTML 提供了一种可选的方式来传达编码。示例:<meta charset="utf-8">。支持 HTML 的编辑器不应允许此指示符与保存文件时使用的编码不同。支持 HTML 的编辑器可能会在打开文件时发现此指示符并使用指定的编码来读取文件。

  • HTTP 使用另一种可选方式:Content-Type 响应头。 Web 服务器以静态方式或与它运行的代码(例如 ASP.NET)一起发出此信息。

  • 如果给定,Web 浏览器使用 HTTP 方式。

  • XHR(AJAX 等)使用 HTTP 和 JavaScript 处理。如果需要,JavaScript 处理应酌情应用 HTTP 和 HTML 规则。注意:如果内容为 JSON,当前 RFC 要求编码为 UTF-8。

无需任何人或事物猜测。

诊断

  • 您打算使用哪种字符编码?本世纪,UTF-8 已成为一种标准,如果您选择使用不同的标准,您应该有充分的理由并记录它(为他人和您未来的自己)。

  • 将文件中的字节与您希望它表示的文本进行比较。它是否使用预期的编码?使用以十六进制显示字节的编辑器或工具。

  • 正如@snakecharmerb 所建议的,服务器发送什么?使用 Web 浏览器的 F12 网络选项卡。

    • HTTP 响应标头说明了什么?
    • HTML 元标记说明了什么?
    • 什么是 HTML 文档类型(如果有)?

【讨论】:

  • 感谢您非常彻底的回答。以下是我的一些发现: AJAX 请求:contentType: 'application/json;字符集=utf-8'; HTML 文档:;响应标头(来自浏览器控制台):内容类型:text/html;字符集=utf-8。所以看来我有正确的字符集。我注意到的一件奇怪的事情是,当我在 Notepad++ 中打开文件时,我可以看到编码是 UTF-8-BOM。我转换为 UTF-8 但仍然没有运气。最后,你知道为什么IE可以正确显示字符,而其他浏览器不能吗?
猜你喜欢
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2012-09-02
相关资源
最近更新 更多