【问题标题】:Character Encoding Issue - UTF8 / iso-8859-1字符编码问题 - UTF8 / iso-8859-1
【发布时间】:2014-01-18 23:15:29
【问题描述】:

新年快乐!

我在我的网站 (jimpix.co.uk) 上使用 Classic ASP。我在 12 月初更新了它以使用 Bootstrap 框架,它在 HEAD 元素中使用了它:

<meta charset="utf-8">

我把所有用户输入的内容都通过“Server.HTMLencode”放

我的理解是,这是消除跨站脚本风险所必需的。

我做了一些基本的测试,发现了这个:

  1. 编码为 UTF-8
  2. 通过“Server.HTMLencode”放入表单数据
  3. é, è, à, ç 呈现为 é, è, Ã, ç

查看源代码显示字符为:

&#195;&#169;, &#195;&#168;, &#195;&#160;, &#195;&#167;
  1. 编码为 charset=iso-8859-1
  2. 通过“Server.HTMLencode”放入表单数据
  3. é, è, à, ç 仍然呈现为 é, è, à, ç

查看源代码显示字符为:

&#233;, &#232;, &#224;, &#231;

问题似乎是我不能在没有 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


    【解决方案1】:

    在您提供的代码中看起来有问题的一件事是您应该使用 utf-8

    Response.CodePage = 65001
    

    1252 适用于 Windows-1252,它(几乎)与 iso-8859-1 相同

    此外,如果您的页面包含任何硬编码的非westerh 字符,那么您需要使用utf-8 编码保存页面。你可以用记事本做到这一点。从文件菜单中选择另存为,您将在对话框中看到该选项。

    我推荐这个页面,它提供了更多细节

    http://www.hanselman.com/blog/InternationalizationAndClassicASP.aspx

    【讨论】:

    • 谢谢约翰 - 已经解决了 :-) 非常感谢您的帮助。
    • 另外一点 - 2057 是英国的 lcid 设置。 1060 似乎是斯洛文尼亚。除非您使用 FormatCurrency 函数,否则它不应该有任何区别。 msdn.microsoft.com/en-us/goglobal/bb964664.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2016-10-04
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多