何时应该使用 HTML 实体?

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

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

请在这个问题上给予解释,我们将不胜感激。

27644 次浏览

基于我所收到的评论,我进一步研究了这个问题。看来目前 最佳实践是放弃使用 HTML 实体,而使用实际的 UTF-8字符。列举的理由如下:

  1. UTF-8编码更容易阅读和编辑那些谁理解什么字符意味着和知道如何输入它。
  2. 对于那些不理解 UTF-8编码的人来说,它和 HTML 实体编码一样难以理解,但是它们的优势在于可以呈现为特殊字符,而不是难以理解的十进制或十六进制编码。

只要页面的编码被正确设置为 UTF-8,就应该使用实际的字符而不是 HTML 实体。关于这个话题,我读过几篇文章,但最有帮助的是:

摘自 字符编码的秘密文章:

维基百科是一个很好的案例研究 最初使用的应用程序 ISO-8859-1,但是在下列情况下切换到 UTF-8 它变得过于繁琐,以至于无法支撑 外语。 机器人将现在 实际上通过文章和 将字符实体转换为它们的 对应的实际字符 为方便使用者,以及 可搜索性

这篇文章还给出了一个很好的例子,涉及到中文编码:

UTF-8:

這兩個字是甚麼意思

HTML 实体 :

這兩個字是甚麼意思

UTF-8和 HTML 实体编码对我来说都没有意义,但是 至少 UTF-8编码可以识别为外语,它将在编辑框中正确地呈现。本文继续介绍 HTML 实体编码的版本:

对我们这些人来说极其不方便 真正知道自己角色的人 实体是完全无法理解的 穷用户谁不! 即使 对用户更加友好, “可理解的”字符实体,如 (theta)将留给那些 对学习 HTML 不感兴趣 挠头,另一边 如果他们在编辑框里看到 θ, 他们就会知道这是特别的 性格,并以相应的方式对待它, 即使他们不知道怎么写 这个角色本身。

正如其他人所指出的,对于保留的 XML 字符(与号、小于号、大于号) ,仍然必须使用 HTML 实体。

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

实体可能会为您购买一些与不能正确理解编码的脑死亡客户端的兼容性。我不相信这包括任何当前的浏览器,但你永远不知道什么其他类型的程序可能会给你带来麻烦。

不过,更有用的是,HTML 实体保护您免受自己的错误: 如果您在服务器上错误配置了某些内容,并且最终向页面提供的 HTTP 头显示为 ISO-8859-1,而 META标记显示为 UTF-8,那么至少您的 & mash; es 将始终工作。

如果您的编辑器支持 Unicode,那么您通常不需要使用 HTML 字符实体:

  • 您的键盘不支持您需要键入的字符。例如,许多键盘没有 em-ash 或版权符号。
  • 您的编辑器不支持 Unicode (几年前非常常见,但现在可能不支持)。
  • 您希望在源代码中明确显示正在发生的事情。例如, 代码比相应的空白字符更清晰。
  • 您需要转义 HTML 特殊字符,如 <&"

我不会对视觉上容易混淆的字符使用 UTF-8。例如,很难区分符号和负号,尤其是不换行空格和空格。对于这些字符,一定要使用实体。

对于易于视觉理解的字符(例如上面的中文示例) ,可以使用 UTF-8。

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

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

此外,我个人为不可见字符编写实体,以及那些看起来类似于标准 AScii 的实体,因此很容易混淆。例如,有 u1173(在某些字符中看起来像一个破折号)或 u1175,它看起来像垂直条。在任何情况下我都会使用实体。

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

如果从/到 UTF-8的字符集转换不是那么不可靠(您总是会碰到一些字符和一些不能正确转换的工具) ,那么在 UTF-8上进行标准化将是可行的方法。

就我个人而言,我在 utf-8中做所有的事情,因为很长一段时间,然而,在 html 页面中,你总是需要将 & 符号(&) ,大于(>)和小于(<)字符转换为它们的等价实体,& amp; ,& gt; 和 & lt;

另外,如果您打算使用 utf-8文本进行一些编程,那么有一些事情需要注意。

  • 在使用实体时,XML 需要一些额外的代码行来验证。
  • 有些库不能很好地与 utf-8配合使用。例如,某些 Linux 发行版中的 PHP 在其正则表达式库中放弃了对 utf-8的完全支持。
  • 限制使用 html 实体的文本中的字符数是比较困难的,因为一个实体使用许多字符。而且总是存在将实体一分为二的风险。