我们有一个使用经典的ASP网站。
我们的发布过程的一部分,替代值在一个文件中,我们发现了一个bug在它那里将写入文件出来为UTF-8。
然后,这会导致我们的应用程序,开始吐出垃圾。 撇号得到返回的一些编码字符。
如果我们然后去了删除,说这个文件是UTF-8则作为垃圾现在可以正确显示先前渲染文本的BOM。
有什么是IIS做不同的,当它遇到UTF-8文件?
我们有一个使用经典的ASP网站。
我们的发布过程的一部分,替代值在一个文件中,我们发现了一个bug在它那里将写入文件出来为UTF-8。
然后,这会导致我们的应用程序,开始吐出垃圾。 撇号得到返回的一些编码字符。
如果我们然后去了删除,说这个文件是UTF-8则作为垃圾现在可以正确显示先前渲染文本的BOM。
有什么是IIS做不同的,当它遇到UTF-8文件?
UTF-8不使用物料清单; 它是在使他们有一些微软的软件一个恼人的不良特性。 你需要找到哪一步的释放过程是把一个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实际上是字符集的数据中),它应该显示确定。 但是,如果你的文件确实有在启动一个UTF-8编码的BOM,你现在看到的“我»¿”在你的页面,而这正是那些字节看起来像ISO-8859-1。 所以,你仍然需要摆脱misBOM的。
我在完全相同的问题,昨天搜索和跨出来:
http://blog.inspired.no/utf-8-with-asp-71/
重要的部分从该页面,如果它消失了......
ASP代码:
Response.ContentType = "text/html"
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
Response.CodePage = 65001
Response.CharSet = "UTF-8"
和下面的HTML META标记:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
我们使用meta标记和ASP CharSet属性,但页面仍然没有正确呈现。 加入其它三行asp文件后,一切都只是工作。
希望这可以帮助!
如果您在使用Access数据库,你应该写
Session.CodePage=65001
Set tabtable= Conn.Execute("SELECT * FROM table")