我们有一个使用经典ASP的网站。

我们发布过程的一部分替换了文件中的值,我们发现其中的一个错误,该错误会将文件写为UTF-8。

然后,这导致我们的应用程序开始吐出垃圾。撇号作为一些编码字符返回。

如果然后删除表示该文件为UTF-8的BOM表,则现在可以正确显示以前渲染为垃圾的文本。

当IIS遇到UTF-8文件时,IIS是否会做一些不同的事情?

最佳答案

UTF-8不使用BOM。在某些将它们放在那里的Microsoft软件中,这是一个令人讨厌的功能。您需要找到发布过程的哪个步骤将UTF-8编码的BOM放入文件中并加以修复。即使您使用的是UTF-8,也应该停止这样做,这实际上是最好的。

但我怀疑是IIS导致了显示问题。浏览器更有可能猜测最终显示页面的字符集,并且当它看到看起来好像是UTF-8编码的字节时,就会猜测整个页面都是UTF-8。您应该能够通过使用HTTP标头声明一个确定的字符集来停止此操作:

Content-Type: text/html;charset=iso-8859-1


和/或HTML中的meta元素

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />


现在(假设ISO-8859-1实际上是数据所在的字符集),它应该显示OK。但是,如果您的文件确实在开始时确实具有UTF-8编码的BOM,则现在您将在页面中看到它是“”,这就是ISO-8859-1中这些字节的样子。因此,您仍然需要摆脱该misBOM。

关于asp-classic - 经典的ASP文本替换和UTF-8编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1453864/

10-16 18:43