关于utf 8:字符编码问题-UTF8 / iso-8859-1

Character Encoding Issue - UTF8 / iso-8859-1

新年快乐!

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

1
<meta charset="utf-8">

我通过" Server.HTMLencode"放置了所有用户输入的内容。

我的理解是,这是消除跨站点脚本编写风险的必要条件。

我已经做了一些基本测试,发现了:

  • 编码为UTF-8
  • 通过" Server.HTMLencode"放置表单数据
  • ??,?¨,?,?§呈现为????,???,?,?,???§
  • 查看源将字符显示为:

    1
    , , ,
  • 编码为charset = iso-8859-1
  • 通过" Server.HTMLencode"放置表单数据
  • ??,?,?,?§仍呈现为?,?,?,?§
  • 查看源将字符显示为:

    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