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

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

    请阐明此问题。将不胜感激。

有帮助吗?

解决方案

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

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

其他提示

根据收到的评论,我对此进行了进一步的研究。当前,最佳做法是放弃使用HTML实体,而改用实际的UTF-8字符。列出的原因如下:

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

    只要页面的编码正确设置为UTF-8,就应该使用实际字符而不是HTML实体。我阅读了一些有关此主题的文档,但最有帮助的是:

    • UTF-8:字符编码的秘密
    • 维基百科特殊字符帮助

      摘自 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不感兴趣 挠头。在另一 如果他们在编辑框中看到θ, 他们会知道这很特别 性格,并相应地对待它, 即使他们不知道怎么写 那个角色自己。

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

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

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

很长一段时间以来,我个人都使用utf-8进行所有操作,但是,在html页面中,您始终需要将与号(&),大于(>)和小于(<)字符转换为它们的等效实体,&amp ;,&gt;和&lt;

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

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

实体可能会为您带来一些与无法正确理解编码的脑瘫客户的兼容性。我不认为它会包含当前的任何浏览器,但您永远不知道还有其他哪种程序可能会打击您。

不过,更有用的是HTML实体可以保护您免受自己的错误的影响:如果您在服务器上配置错误,最终导致页面上带有HTTP标头的页面说它是ISO-8859-1,而META标签则表明它是UTF-8,至少您的&mdash; es会一直有效。

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

如果从/到UTF-8的字符集转换不是那么大的麻烦(您总是会偶然发现一些字符和一些无法正确转换的工具),那么就可以使用UTF-8标准化

如果您的页面以utf-8正确编码,则无需使用html实体,只需直接使用所需的字符即可。

所有先前的答案对我来说都是有意义的。

此外:它主要取决于您打算使用的编辑器和文档语言。对编辑器的最低要求是它支持文档语言。这意味着,如果您的文字是日语,请当心不要使用不显示文字的编辑器(即文档本身没有实体)。如果是英文,您甚至可以使用类似vim的旧编辑器,并且仅对相对很少使用&copy;的实体使用实体。和朋友。 当然:&gt;for和其他HTML特殊功能仍需要转义。 但是,即使使用其他拉丁语1语言(德语,法语等),您也很难知道ä... p

此外,我亲自为看不见的字符以及看起来与标准ascii相似的元素编写实体,因此很容易混淆。例如,有u1173(在某些字符集中看起来像破折号)或u1175,看起来像是竖线。无论如何,我都会使用实体。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top