代码之家  ›  专栏  ›  技术社区  ›  Derek Ekins

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

  •  11
  • Derek Ekins  · 技术社区  · 15 年前

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

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

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

    如果我们接着删除声明此文件是UTF-8的BOM,那么以前呈现为垃圾的文本现在就正确显示了。

    当遇到utf-8a文件时,IIS是否有不同的做法?

    3 回复  |  直到 8 年前
        1
  •  6
  •   bobince    15 年前

    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中的样子。所以你仍然需要摆脱这个错误。

        2
  •  14
  •   Werewolf    14 年前

    我昨天在搜索同一个问题时发现:

    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 http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    

    我们使用了meta标记和asp-charset属性,但是页面仍然没有正确呈现。在将其他三行添加到ASP文件之后,一切都正常工作。

    希望这有帮助!

        3
  •  1
  •   user2389005    11 年前

    如果使用access db,则应写入

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