【问题标题】:Classic ASP and UTF-8经典 ASP 和 UTF-8
【发布时间】:2015-07-20 19:06:12
【问题描述】:

我正在更改我的应用程序以使用 utf-8 页面。 所以每个ASP页面都有这段代码

Response.CodePage = 65001 
Response.CharSet = "utf-8"

HTML

<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

我在 Visual Studio 2013 中使用编码 UTF-8(签名)65001 保存了所有文档。

当我像这样在 HTML 中编写特殊字符时,这可以正常工作:

<p>Atenção</p>

但是当我用 VBScript(经典 ASP)编写时,它不起作用并且特殊字符很乱。我可以通过使用编码 UTF-8(with 签名)65001 保存文档 (.asp) 来修复它们。

所以,我的问题是:

  • 我必须在每个页面上使用这种编码(带签名)吗?
  • 我会遇到什么样的问题?

【问题讨论】:

  • 我推荐阅读这个——hanselman.com/blog/InternationalizationAndClassicASP.aspx VS 似乎调用字节顺序标记签名。
  • 所以,我的 ASP 页面必须有 BOM。
  • 包含 BOM 应该不会造成任何损害。也就是说,我经常将页面保存为没有 BOM 的 UTF8 并且我没有遇到任何困难。 (虽然我倾向于不将 VS 用于 Classic ASP,我使用一个名为 EditPlus 的编辑器,它类似于 Hanselman 提到的 Notepad2)

标签: utf-8 character-encoding asp-classic


【解决方案1】:

您需要为每个.asp 文件设置@Codepage 指令。我们正在使用一个通用的#include 文件,它首先包含在每个页面上,并且前面有以下几行:

<%@Codepage = 65001 %>
<% Option explicit %>
<% Response.Codepage = 65001 %>

查看有关代码页指令here 的更多信息(备注部分)。链接页面是关于Session.Codepage,如果你想使用内置的 Session,它也可能会让你感兴趣。

使用 BOM 保存所有文件不是 IIS 的要求,我们保存所有没有 BOM 的文件都可以正常工作。

在使用 ASP 多年后,我的经验是:我们有时会遇到源文件 BOM 潜入生成的输出的问题,这会导致 AJAX/JSON 响应出现问题。补救措施是在写入输出之前使用Response.Clear

【讨论】:

  • 只要您指定&lt;%@Codepage = 65001 %&gt;,IIS ASP 预处理器就知道它需要将 ASP 页面视为 UTF-8,无论它是否具有 BOM。
【解决方案2】:

我遇到了奇怪的字符问题,尝试了所有建议的编码设置,但没有任何效果,尽管上面确实将数据正确地输入了 sql 数据库,但它不会正确显示(仍然是编码/解码问题)。

我的决定是从数据库连接字符串中删除“CharSet=utf8;”。

所以不是我的连接字符串:

sConnection = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;CharSet=utf8;Port:3306;DATABASE=dbname;UID=uid;PASSWORD=*****;OPTION=3" 

我用过:

sConnection = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;Port:3306;DATABASE=dbname;UID=uid;PASSWORD=*****;OPTION=3" 

现在显示正确!

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 2016-03-24
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    相关资源
    最近更新 更多