经典ASP和UTF-8

时间:2015-07-20 19:06:12

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

我正在更改我的应用程序以使用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(签名)65001保存文档(.asp)来修复它们。

所以,我的问题是:

  • 我是否必须在每个页面上使用此编码(带签名)?
  • 我可以遇到什么样的问题?

2 个答案:

答案 0 :(得分:3)

您需要为每个@Codepage文件设置.asp指令。我们使用的是通用的#include文件,该文件首先包含在每个页面中,并且预先包含以下行:

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

查看有关Codepage指令here的更多信息(备注部分)。链接页面约为Session.Codepage,如果您想使用内置会话,这也可能对您有意义。

保存所有带有BOM的文件不是IIS的要求,我们保存了所有文件而没有BOM正常工作。

根据我的经验,在使用ASP一年多之后的一个注意事项:我们有时会将源文件的BOM偷偷摸摸到生成的输出中,导致AJAX / JSON响应出现问题。解决方法是在写输出之前使用Response.Clear

答案 1 :(得分:0)

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

我的决议是删除&#34; CharSet=utf8;&#34;来自数据库连接字符串。

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

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" 

事情现在正确显示!

相关问题