【问题标题】:HTML Character EncodingHTML 字符编码
【发布时间】:2010-12-01 15:43:01
【问题描述】:

当从数据库中输出 HTML 内容时,一些编码字符被浏览器正确解释,而另一些则没有。

例如,%20 正确地变成了一个空格,但%AE 没有成为注册商标符号。

我是否缺少某种内容编码说明符?

(注意:我无法将内容实际更改为,例如,®,因为我无法控制输入编辑器生成的标记)

【问题讨论】:

  • 好吧,%AE 不是有效的 HTML 转义序列。什么软件对您发出的文本进行预处理?它使用什么字符集?
  • %20%AE 是 URL 编码,而不是 HTML 编码。

标签: html character-encoding


【解决方案1】:

%AE 对 HTML 安全 ASCII 无效, 你可以在这里查看表格:http://www.ascii.cl/htmlcodes.htm

看起来您正在处理 Windows Word 编码(windows-1252?? 类似的东西)它真的不会转换为安全的 html,除非您在中间进行某种翻译。

【讨论】:

    【解决方案2】:

    字节AE 是注册商标的ISO-8859-1 表示。如果您没有看到任何内容,那么显然 URL 解码器正在使用其他字符集对其进行 URL 解码。例如UTF-8,这个字节不代表任何有效字符。

    要解决此问题,您需要使用 ISO-8859-1 对其进行 URL 解码,或者将现有数据转换为使用 UTF-8 进行 URL 编码。

    也就是说,您不应该将HTML(XML) encoding(如®)与URL encoding(如%AE)混淆。

    【讨论】:

      【解决方案3】:

      “%20”编码是 URL 编码。它只对 URL 有用,对显示 HTML 无效。

      如果您想在 HTML 页面中显示 reg 字符,您有两个选择:使用 HTML 实体,或以 UTF-8 传输您的页面。

      如果您决定使用实体代码,将它们整体转换相当简单,因为您可以使用数字实体;您不必使用命名实体——即使用® 而不是&#reg;

      如果您需要知道每个字符的实体代码,我发现这份备忘单非常有用:http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/

      【讨论】:

        【解决方案4】:

        您使用什么服务器端语言?检查 URL 解码功能。

        【讨论】:

        • 我确实需要进行 URL 解码,但我也错误地在导致问题的页面中添加了
        【解决方案5】:

        如果你使用 php,你可以使用 urldecode(),但你应该小心 + 字符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-07
          • 2013-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多