我在我的网站上使用经典ASP(jimpix.co.uk)。我在12月初更新了它以使用Bootstrap Framework,它在HEAD元素中使用了它:
<meta charset="utf-8">
我将所有用户输入的内容通过“Server.HTMLencode”
我的理解是,这是消除跨站点脚本编写风险所必需的。
我做了一些基本测试,发现了这个:
查看来源将字符显示为:
é, è, à, ç
查看来源将字符显示为:
é, è, à, ç
问题似乎是我不能在编码为UTF-8的页面上使用“Server.HTMLencode”,而没有Server.HTMLencode使用法语/德语/俄语/希伯来语等。
我尝试将其添加到测试页面的顶部:
Response.CodePage = 1252
Response.LCID = 1060
Response.Charset = "utf-8"
但它没有任何区别。
我的测试页面非常简单 - 没有数据库等的链接,因此可以规定数据库上的字符编码等问题:
<%
frm = Server.HTMLencode(request("body"))
%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form action="test0001.asp" method="post">
<p><textarea name="body" style="width:400px; height:200px;"><%=frm%></textarea></p>
<p><input type="submit"></p>
</form>
</body>
</html>
我把编码放回:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
暂时在我的直播网站上,我尝试解决这个问题。
非常感谢任何建议,
谢谢!
答案 0 :(得分:0)
您提供的代码中出现错误的一件事是,对于utf-8,您应该使用
Response.CodePage = 65001
1252适用于Windows-1252,(几乎)与iso-8859-1相同
此外,如果您的页面包含任何硬编码的非西文字符,则需要使用utf-8编码保存页面。你可以用记事本做到这一点。从文件菜单中选择另存为,您将在对话框中看到该选项。
我推荐这个页面,它提供了更多细节
http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx