【问题标题】:Classic ASP gremlims, getting a  inserted into text whenever an HTML special character is used经典的 ASP gremlims,每当使用 HTML 特殊字符时都会在文本中插入一个 Â
【发布时间】:2009-06-04 00:43:24
【问题描述】:

我正在开发一个较旧的经典 ASP 站点,并且有一个表单允许用户输入一些文本(进入多行文本框),如果他们添加像 ®(注册商标)这样的 html 字符,它会正确插入它.但是当他们去编辑数据时,使用相同的表格,更新会在注册商标前添加一个随机的“”(抑扬符)。内容类型为 utf-8。

有什么想法吗?

感谢您随时提供此信息。它一直让我发疯。 -m

【问题讨论】:

    标签: asp-classic utf-8


    【解决方案1】:

    根本问题是 Response.Codepage 对表单帖子的影响。

    当您向客户端发送表单并指定内容编码为 UTF-8 时,浏览器将假定表单帖子的内容应以 UTF-8 编码发送。

    现在接收帖子的操作页面将(有点违反直觉)使用 Response.Codepage 的值来告知它帖子中的字符是如何编码的。这并不明显,因为我们倾向于认为发送者的工作是定义其发送内容的编码。此外,认为与我们想要在响应中发送的内容的编码有关的属性与初始请求的接收方式有任何关系,这也不是一个自然的飞跃。在这种情况下确实如此。

    发生的情况是您的表单正在发布字符的 UTF-8 编码版本,但接收的页面没有将其 Response.Codepage 设置为 65001(UTF-8 代码页)。它可能设置为系统 OEM 代码页,如 1252。因此,字符的 UTF-8 编码被解释为两个单独的字符。

    我对 ASP 中良好字符处理的建议是:-

    • 将所有页面保存为 UTF-8
    • 在所有页面的顶部包含
    • 在所有页面的顶部包含
    • 将发布的数据存储在 Unicode 字段类型中,例如 SQL Servers NVARCHAR 类型。

    这里重要的是,在您读取 ASP 页面中的表单值之前,您需要确保将 Response.Codepage 设置为与发件人编码匹配的代码页,并且这不会自动发生。

    【讨论】:

    • 我也必须插话,上面的要点使我摆脱了谁知道有多少小时的头发脑路径,顽固的自我厌恶无法弄清楚为什么 保存时不会粘贴。我的第一次搜索产生了这个解决方案。非常感谢。
    【解决方案2】:

    我猜你使用的编辑器不支持 UTF-8,而是将所有内容都转换为 ASCII。

    简单的答案是停止在 HTML 页面中使用特殊字符。版权符号应写为©©

    【讨论】:

    • 请原谅这个小问题,但它不能将文本读取为 ASCII,因为 ASCII 不支持重音字母或版权符号。它必须使用八位编码,如 ISO-8859-1 或 windows-1252。
    【解决方案3】:

    根据我对这个确切问题的经验,我发现这些字符出现了很多,因为 1) 用户在输入内容时使用了非英语字符集(和键盘)(即西班牙语),以及 2)内容未转换为 UTF-8。你在正确的轨道上,检查标题中的内容类型,但你真的必须通过转换器运行内容,如果这种情况继续发生的话。多年前,这个问题让我在使用 Classic ASP 时遭受了数小时的痛苦(我希望我仍然可以访问代码以提供进一步的帮助)。

    【讨论】:

      【解决方案4】:

      ® 是 ® 存储为 UTF-8 时的样子,但显示为 ASCII/ISO-8859-1/Windows-1252。使用 meta 标记不足以确保您的页面以 UTF-8 格式提供。您还需要在 Content-Type HTTP 标头中设置编码。此标头通常使用某些服务器范围的设置或以编程方式设置。

      我不知道 ASP,但这似乎是您应该如何设置该标头:

      HtmlEncode UTF-8

      这可能会提供更多信息:

      http://technet.microsoft.com/en-us/library/bb742422.aspx#EBAA

      如果您的数据存储在数据库中,您还需要确保数据也以 UTF-8 格式存储,或者在存储和检索时进行了转换。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-15
        • 2010-09-28
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 2017-09-01
        • 2014-07-14
        相关资源
        最近更新 更多