经典的ASP response.write UTF-8中的中文字符

时间:2013-01-19 21:24:25

标签: asp-classic utf-8

我是charsets和encoding的新手。我不知道我做错了什么,但是当我想要输出你好时,页面只是吐出奇怪的代码。这是我的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%Response.ContentType = "text/html"
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
Response.CodePage = 65001
Response.CharSet = "UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<%response.write ("你好")%>
</body>
</html>

我在屏幕上看到的只有:ä½å¥½ 该文件也以UTF-8编码保存。

提前致谢!

4 个答案:

答案 0 :(得分:2)

如果它对某人有帮助。 ASP声明总是在任何HTML之前。 包括定义会话,这种方式永远不会编码utf-8

<%@CodePage = 65001%>
<%
Session.CodePage = 65001
Response.charset ="utf-8"
Session.LCID     = 1033 'en-US
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<%response.write ("你好")%>
</body>
</html>

答案 1 :(得分:1)

在设置代码页的代码块之后移动您的DOCTYPE声明。代码页设置需要在任何输出之前进行。

答案 2 :(得分:1)

很可能你的asp文件只是UTF-8编码(没有bom)。
如果是,则需要使用BOM保存文件 在Notepad ++中,Encoding > Convert to UTF-8
在记事本中,在保存对话框中指定编码为UTF-8 事实上,BOM for UTF-8 files is not recommended
重点是在ASP中,响应流隐含地需要BOM 作为一个实验,尝试运行以下页面(编码为utf-8而不是bom),您将看到Response对象刷新奇怪的字符而不是字母。但是,直接输入应该是平滑的。

<%
Response.Codepage = 65001
Response.Charset = "utf-8"
Response.Write "I'm weird: 好"
%><br />I'm not weird: 好

答案 3 :(得分:0)

您不必将.asp保存为服务器端的UTF-8!只需正常保存(UCS-2)。