我们有一个使用经典ASP的网站.
我们的发布过程的一部分替代文件中的值,我们发现了一个错误,它将文件写入UTF-8.
这样我们的应用程序开始吐出垃圾.撇号作为一些编码字符返回.
如果我们然后删除说明此文件为UTF-8的BOM,则以前呈现为垃圾的文本现在正确显示.
当遇到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 http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
现在(假设ISO-8859-1实际上是您的数据所在的字符集),它应该显示OK.但是,如果您的文件在开始时确实有UTF-8编码的BOM,那么现在您将在页面中看到“’,这是ISO-8859-1中的这些字节.所以你还需要摆脱这个misBOM.