本地IIS服务的网页显示带问号的黑色菱形

时间:2019-03-15 19:40:30

标签: iis browser character-encoding localhost

我在.NET应用程序中遇到问题,本地IIS服务的页面显示随机字符(大多数是黑色菱形,其中带有白色问号)。这发生在Chrome,Firefox和Edge中。 IE由于某些原因会正确显示页面。

在生产环境和生产前环境较低的环境中,相同的页面可以在我的所有浏览器中使用。严格来说,这是一个本地问题。

这是我尝试过的:

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

其他信息:

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

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

(字体没有问题[除非没有可用的字体来呈现。]。当没有可用的字体时,通常将其呈现为白色填充的矩形。)

字符编码的基本原理很简单:使用足够的字符集(例如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所建议,服务器发送什么?使用网络浏览器的F12网络标签。

    • HTTP响应标头说什么?
    • HTML meta标签怎么说?
    • 什么是HTML文档类型?