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

问题描述 投票:107回答:8

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

  • 在破折号( - ,&emdash;
  • &符号(&,&
  • 3/4分数(¾,¾

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

html xhtml html-entities
8个回答
75
投票

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

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

113
投票

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

  1. UTF-8编码更易于阅读和编辑,以便了解角色的含义并知道如何键入。
  2. 对于那些不理解它们的人来说,UTF-8编码与HTML实体编码一样难以理解,但它们具有渲染为特殊字符而不是难以理解十进制或十六进制编码的优点。

只要您的页面编码正确设置为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实体编码版本的以下内容:

对于我们这些真正了解角色实体的人来说非常不方便,对于那些不熟悉这些角色实体的穷人来说,完全无法理解!即使是更加用户友好,“可理解”的角色实体,如&theta;将让那些对学习HTML不感兴趣的用户摸不着头脑。另一方面,如果他们在编辑框中看到θ,他们就会知道它是一个特殊的角色,并相应地对待它,即使他们不知道如何自己编写该角色。

正如其他人所指出的那样,您仍然必须将HTML实体用于保留的XML字符(&符号,小于号,大于号)。


5
投票

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

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


5
投票

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

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

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

4
投票

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

但更有用的是,HTML实体可以保护您免受自己的错误:如果您在服务器上配置错误,并且您最终提供的页面上有一个HTTP标头,其中包含ISO-8859-1META标签,表明它是UTF-8,至少是-es将永远有效。


4
投票

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

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


2
投票

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


2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.