Character Encoding Issue - UTF8 / iso-8859-1
新年快乐!
我在我的网站(jimpix.co.uk)上使用的是Classic ASP。我在12月初对其进行了更新,以使用Bootstrap框架,该框架在HEAD元素中使用了它:
1 | <meta charset="utf-8"> |
我通过" Server.HTMLencode"放置了所有用户输入的内容。
我的理解是,这是消除跨站点脚本编写风险的必要条件。
我已经做了一些基本测试,发现了:
查看源将字符显示为:
1 | , , , |
查看源将字符显示为:
1 | , , , |
问题似乎是,在没有Server.HTMLencode的情况下,我无法在编码为UTF-8的页面上使用" Server.HTMLencode"。法语/德语/俄语/希伯来语等。
我尝试将其添加到测试页的顶部:
1 2 3 | Response.CodePage = 1252 Response.LCID = 1060 Response.Charset ="utf-8" |
但这没什么区别。
我的测试页非常简单-没有到数据库等的链接,因此可以解决数据库等上字符编码的任何问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <% 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> |
我已将编码重新设置为:
1 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
暂时在我的实时网站上,而我尝试解决这个问题。
任何建议将不胜感激,
谢谢!
您提供的代码中看起来有问题的一件事是,对于utf-8,您应该使用
1 | Response.CodePage = 65001 |
1252适用于Windows-1252,(几乎)与iso-8859-1
相同
此外,如果您的页面包含任何硬编码的非西数字符,那么您需要使用utf-8编码保存该页面。您可以使用记事本执行此操作。从文件菜单中选择另存为,您将在对话框中看到该选项。
我推荐此页面,该页面提供了更多详细信息
http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx