【问题标题】:IE9: How to make Unicode characters appear properly?IE9:如何使 Unicode 字符正确显示?
【发布时间】:2012-01-20 19:37:48
【问题描述】:

我正在设计一个网站 (www.lathamcity.com),我在其中使用 Unicode 字符 • 来表示标题中的项目符号点。但是,当我在 IE9 中加载页面时,项目符号点不会出现,取而代之的是字符的 Unicode。

我的字符集是在 HTML 文档中定义的

<meta charset="UTF-8">

标题的代码是

    <td id="infoCell" class="header">   
        <a href="/resume.pdf" class="header" target="_blank">R&#233sum&#233</a> 
        &nbsp &#x2022 &nbsp 
        <a href="mailto:acl68@case.edu" class="header" target="_blank">E-mail</a> 
        &nbsp &#x2022 &nbsp
        <a href="https://github.com/orthogonal/" class="header" target="_blank">GitHub</a>
        &nbsp &#x2022 &nbsp
        <a href="http://stackoverflow.com/users/1146679/andrew-latham" class="header" target="_blank">StackOverflow</a>
        &nbsp &#x2022 &nbsp
        <a href="http://main.uschess.org/assets/msa_joomla/MbrDtlMain.php?12842311" class="header" target="_blank">USCF</a>
    </td>

字符在 Chrome 和 Firefox 中正确显示。我做错了什么,为什么会发生,我该如何解决?

【问题讨论】:

    标签: html internet-explorer unicode internet-explorer-9


    【解决方案1】:

    你少了一个分号。

    &#x2022
    

    应该是

    &#x2022;
    

    同样,&amp;nbsp&amp;#233 应该以 ; 结尾。

    HTML5 spec 说:

    十六进制数字字符引用

    & 号后面必须跟 U+0023 数字符号字符 (#),后面必须跟 U+0078 拉丁小写字母 X 字符 (x) 或 U+0058 拉丁大写字母 X 字符 (X ),然后必须跟在 U+0030 DIGIT ZERO (0) 到 U+0039 DIGIT NINE (9)、U+0061 拉丁小写字母 A 到 U+0066 拉丁小写字母 F 范围内的一个或多个数字,以及U+0041 LATIN CAPITAL LETTER A 到 U+0046 LATIN CAPITAL LETTER F,表示一个十六进制整数,对应于根据以下定义允许的 Unicode 代码点。 数字后面必须跟一个 U+003B 分号字符 (;)。

    【讨论】:

    • 这是 IE 9 中的错误(在 Quirks 模式下),因为按照规范,&amp;#x2022 在这里有效。但是,用分号结束所有实体引用(如&amp;nbsp;)和字符引用(如&amp;#233;)一直是一种很好的推荐做法,部分原因是省略它会引发各种浏览器错误。
    • @JukkaK.Korpela,哪个规范?我对ambiguous ampersand 部分的解读是,尽管在 RCDATA、属性值和外部元素之外存在可恢复的错误,但这是一个错误。
    • @JukkaK.Korpela 在 SGML 中可能是这样,但 HTML5 不是 SGML,我很抱歉。顺便说一句,后面跟一个空格是可以的,但我很确定后面跟一个字母(如第一行)即使是 SGML 也是一个禁忌!
    • 当前的 HTML 规范是 HTML 4.01 和一些 XHTML 规范,而 HTML5 是一个可变草案。在 HTML 4.01 中,所讨论的结构是有效的,您可以在 validator.w3.org 处查看。提到这是一个 IE 9 错误的原因是,可能有很多现有代码依赖于分号的省略(因此可能会在 IE 9 Quirks Mode 上中断),因为浏览器通常允许这样做。
    • @JukkaK.Korpela,不要等待 HTML5 成为非草案。 blog.whatwg.org/html-is-the-new-html5 :“WHATWG HTML 规范现在可以被认为是一个‘活的标准’。它比迄今为止任何版本的 HTML 规范都更成熟,所以我们一直把它仅仅称为草案是没有意义的。我们将不再遵循规范开发的“快照”模型......” HTML4 已过时。 HTML5 现在是浏览器的目标,自 Hickson 和 co 以来就被称为 HTML5。已删除整个草稿的版本号。
    猜你喜欢
    • 2012-08-08
    • 2021-12-06
    • 2016-07-04
    • 2013-06-05
    • 2012-01-23
    • 1970-01-01
    • 2023-03-29
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多