什么时候应该使用HTML实体?

时间:2009-01-12 19:15:19

标签: html xhtml html-entities

这让我困惑了一段时间。随着UTF-8作为Web开发的事实标准的出现,我不确定在哪些情况下我应该使用HTML实体,哪些应该使用UTF-8字符。例如,

  • em dash( - ,&emdash;
  • &符号(&,&
  • 3/4分数(¾,¾

请详细说明这个问题。我们将不胜感激。

8 个答案:

答案 0 :(得分:109)

根据我收到的评论,我进一步研究了这个问题。目前似乎最佳做法是放弃使用HTML实体并使用实际的UTF-8字符。列出的原因如下:

  1. 对于那些了解角色含义并知道如何输入的人来说,UTF-8编码更易于阅读和编辑。
  2. 对于那些不理解它们的人来说,UTF-8编码与HTML实体编码一样难以理解,但它们具有渲染为特殊字符而不是难以理解十进制或十六进制编码的优点。
  3. 只要您的网页编码正确设置为UTF-8,就应该使用实际字符而不是HTML实体。我阅读了几个关于这个主题的文档,但最有帮助的是:

    来自 UTF-8:字符编码的秘密文章:

      

    维基百科是一个很好的案例研究   最初使用的应用程序   ISO-8859-1,但切换到UTF-8时   它的支持变得太麻烦了   外语。 机器人现在   实际上是通过文章和   将字符实体转换为它们的   相应的真实字符   用户友好和   搜索性

    那篇文章也提供了一个涉及中文编码的好例子。以下是为了懒惰的缩写示例:

    <强> UTF-8:

    這兩個字是甚麼意思

    HTML实体

    &#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

    UTF-8和HTML实体编码对我来说都毫无意义,但至少UTF-8编码可识别为外语,并且它将在编辑框中正确呈现。本文继续讨论HTML实体编码版本:

      

    对我们这些人来说非常不方便   谁知道什么性格   实体是完全无法理解的   对那些没有的穷人!即便是   稍微用户友好,   像“可理解”的字符实体   &安培;峰;将离开用户   对学习HTML不感兴趣   挠挠头。在另一   如果他们在编辑框中看到θ,   他们会知道这是特别的   性格,并相应地对待,   即使他们不知道如何写   那个角色本身。

    正如其他人所说,你仍然必须使用HTML实体来保留XML字符(&符号,小于号,大于号)。

答案 1 :(得分:73)

如果编辑器支持Unicode,通常不需要使用HTML字符实体。在以下情况下,实体非常有用:

  • 您的键盘不支持您需要输入的字符。例如,许多键盘没有em-dash或版权符号。
  • 您的编辑器不支持Unicode(几年前很常见,但可能不是今天)。
  • 您希望在源代码中明确说明发生了什么。例如,&nbsp;代码比相应的空格字符更清晰。
  • 您需要转义HTML <&"等特殊字符。

答案 2 :(得分:5)

我不会将UTF-8用于容易在视觉上混淆的字符。例如,很难将emdash与减号区分开,尤其是与空间区分不间断的空间。对于这些角色,一定要使用实体。

对于易于理解的字符(例如上面的中文示例),如果您愿意,请继续使用UTF-8。

答案 3 :(得分:5)

我个人用utf-8做了很长时间,然而,在html页面中,你总是需要将&符号(&amp;),大于(&gt;)和小于(&lt;)字符转换为他们的等效实体,&amp; amp;,&amp; gt;和&amp; lt;

此外,如果您打算使用utf-8文本进行一些编程,还有一些需要注意的事项。

  • XML在使用实体时需要一些额外的行来验证。
  • 有些图书馆与utf-8不一致。例如,某些Linux发行版中的PHP在其正则表达式库中完全支持utf-8。
  • 限制使用html实体的文本中的字符数更难,因为单个实体使用许多字符。此外,总有将实体削减一半的风险。

答案 4 :(得分:4)

实体可能会向您提供与正确理解编码的脑死客户的一些兼容性。我不相信它包含任何当前的浏览器,但你永远不知道其他类型的程序可能会让你受伤。

更有用的是,HTML实体可以保护您免受自己的错误的影响:如果您在服务器上配置错误,并且您最终使用的HTTP标头提供了ISO-8859-1和{{1}的页面标签上写着META,至少你的&amp; mdash; es将永远有效。

答案 5 :(得分:4)

当您想要生成将(动态)包含在具有(多个)不同编码的页面中的内容时,HTML实体非常有用。例如,我们有白标内容,包含在ISO-8859-1和UTF-8编码的网页中......

如果从/到UTF-8的字符集转换不是那么大的不可靠的混乱(你总是偶然发现一些字符和一些不能正确转换的工具),那么标准化UTF-8就是要走的路

答案 6 :(得分:2)

如果您的页面在utf-8中正确编码,则您不需要html实体,只需直接使用您想要的字符即可。

答案 7 :(得分:2)

以前的所有答案对我都有意义。

此外:它主要取决于您打算使用的编辑器和文档语言。编辑器的最低要求是它支持文档语言。这意味着,如果您的文本是日语,请注意使用不显示它们的编辑器(即文档本身没有实体)。如果它是英文的,你甚至可以使用一个旧的类似vim的编辑器,并仅将实体用于相对的很少和复制;和朋友。 当然:&amp; gt;对于&gt;和其他HTML特价仍然需要逃脱。 但即使使用其他拉丁语1种语言(德语,法语等)写ä是一种痛苦,你知道在哪里......

此外,我个人为不可见字符编写实体,并且看起来与标准ascii类似,因此容易混淆。例如,u1173(在某些字符集中看起来像破折号)或u1175,看起来像垂直条。在任何情况下我都会使用实体。