经典ASP文本替换和UTF-8编码

问题描述 投票:11回答:3

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

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

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

如果我们然后删除说明此文件是UTF-8的BOM,那么之前呈现为垃圾的文本现在可以正确显示。

当遇到UTF-8文件时,IIS有什么不同的做法吗?

asp-classic utf-8 iis-6
3个回答
6
投票

UTF-8不使用BOM;在一些微软软件中,这是一个恼人的错误。你需要找到你的发布过程的哪一步是将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。


15
投票

我昨天在同一个问题上搜索并遇到了:

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文件后,一切正常。

希望这可以帮助!


1
投票

如果你使用access db,你应该写

Session.CodePage=65001
Set tabtable= Conn.Execute("SELECT * FROM  table")
© www.soinside.com 2019 - 2024. All rights reserved.