【发布时间】:2014-01-18 23:15:29
【问题描述】:
新年快乐!
我在我的网站 (jimpix.co.uk) 上使用 Classic ASP。我在 12 月初更新了它以使用 Bootstrap 框架,它在 HEAD 元素中使用了它:
<meta charset="utf-8">
我把所有用户输入的内容都通过“Server.HTMLencode”放
我的理解是,这是消除跨站脚本风险所必需的。
我做了一些基本的测试,发现了这个:
- 编码为 UTF-8
- 通过“Server.HTMLencode”放入表单数据
- é, è, à, ç 呈现为 é, è, Ã, ç
查看源代码显示字符为:
é, è, à, ç
- 编码为 charset=iso-8859-1
- 通过“Server.HTMLencode”放入表单数据
- é, è, à, ç 仍然呈现为 é, è, à, ç
查看源代码显示字符为:
é, è, à, ç
问题似乎是我不能在没有 Server.HTMLencode 乱码法语/德语/俄语/希伯来语等的情况下在编码为 UTF-8 的页面上使用“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" />
目前在我的实时网站上,我正在尝试解决这个问题。
任何建议将不胜感激,
谢谢!
【问题讨论】:
标签: encoding utf-8 asp-classic