经典ASP文本替换和UTF-8编码(Classic ASP text substitution an

2019-07-18 18:53发布

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

我们的发布过程的一部分,替代值在一个文件中,我们发现了一个bug在它那里将写入文件出来为UTF-8。

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

如果我们然后去了删除,说这个文件是UTF-8则作为垃圾现在可以正确显示先前渲染文本的BOM。

有什么是IIS做不同的,当它遇到UTF-8文件?

Answer 1:

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的。



Answer 2:

我在完全相同的问题,昨天搜索和跨出来:

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文件后,一切都只是工作。

希望这可以帮助!



Answer 3:

如果您在使用Access数据库,你应该写

Session.CodePage=65001
Set tabtable= Conn.Execute("SELECT * FROM  table")


文章来源: Classic ASP text substitution and UTF-8 encoding