HTML实体:何时使用十进制与十六进制

can*_*era 24 html character-encoding html-entities

对于HTML实体何时使用十进制与十六进制表示法有一个很好的经验法则吗?

例如,非破坏连字符以十进制形式写入,‑并以十六进制形式写入‑.

这个答案说十六进制用于Unicode; 这是否意味着如果您<meta charset="utf-8">在文档中使用标记,则应使用hex <head>

偶尔,我会注意到实体字符被错误地呈现而不是它们代表的实体 - 例如,&amp;在电子邮件主题行或RSS标题中出现(而不是&符号).十六进制或十进制是否更好以避免这种情况?

最后一个考虑因素:使用十六进制或十进制可以影响角色的渲染清晰度(清晰度)吗?

Juk*_*ela 28

经验法则是:使用您喜欢的任何一种,但更喜欢十六进制.☺

浏览器支持没有区别,也没有区别(支持十进制引用的最后一个浏览器只在20世纪90年代死亡).

正如@AlexW所描述的,由于编写字符代码标准的方式,十六进制引用比十进制更自然.但是如果您发现十进制参考更方便,请使用它们.

这个问题与meta标签和字符编码无关.将字符引用引入HTML的主要原因是它们允许您完全独立于文档的编码输入字符.这包括在使用的编码中根本无法直接写入的字符.多亏了它们,您可以输入任何Unicode字符,即使字符编码是ASCII或其他一些有限的编码,如ISO-8859-1.

在过去,通常建议使用命名引用(或"实体引用",因为它们在经典HTML中正式调用),如果可能的话,因为类似于&Omega;在字面上向用户显示时的引用比像&#x3A9;或的参考&#937;.就网络浏览器而言,这已经十多年没有关系了.但是,例如电子邮件客户端可能是一种愚蠢的,在这方面不发达的H ^ H ^ H ^ H ^ H ^ H ^ H ^ H ^ H. 它们可能例如在消息列表中显示引用,即使它们在查看消息时可以正确地解释它们.但似乎没有任何一致的行为,你可以指望.

  • ^ H是对旧设备的故意暗示,其中控制-H(退格)经常被回应为^ H. 所以这是具有讽刺意味的伪删除. (8认同)

Bee*_*jor 6

总体

HTML(和XML)提供了三种编码特殊字符的方法:数字十六进制&#x26;,数字十进制&#38;(又名"字符引用")和命名&amp;(又称"实体引用").几十年来,它们一直保持同样有效并得到所有主流浏览器的全力支持.它们适用于任何编码,但始终使用Unicode集(与ASCII,ISO拉丁语和Windows拉丁语兼容,减去代码128-159)进行渲染.

所以这取决于个人偏好,有一些值得注意的事情.

必要性

如果meta在HTML中添加正确的charset 标记,则根本不需要对特殊字符进行编码(除非& < > " ',或者更常见的是,只是& <在松散的文本中).例外是想要编码指定编码中不存在的字符.但是如果你使用UTF-8,你可以用Unicode代表任何东西.

简短

对于索引10以下的任何字符,十进制都会更短.标签是相对的&#9;,&#x09;因此对于pre包含大量TSV数据的标签可能是值得的.

便于使用

命名引用是最容易使用和记忆的,特别是对于不同背景和技能集的开发人员共享的代码.&lt;比直觉更直观&#x3c;.至于其他人对相关性的评论,它们实际上仍然作为W3C标准的一部分得到了完全支持,甚至已经针对HTML5进行了扩展.

最佳实践

使用命名或十进制引用可能不是最佳通用实践,因为名称仅限英语,并且HTML是唯一的(即使XML缺少命名引用,减去"五大").大多数编程语言和字符表都使用十六进制编码,因此从长远来看,当您保持一致时,它会使事情变得更容易,更便携.虽然对于小型项目或特殊情况,但这可能并不重要.

更多信息:http://xmlnews.org/docs/xml-basics.html#references


Ale*_*x W 5

这些称为数字字符引用。它们源自SGML,它们的数字部分引用了您尝试显示的字符的特定Unicode 代码点。它们允许您表示 Unicode 字符,即使您编写 HTML 的特定字符集没有您引用的字符。使用十进制还是十六进制引用代码点并不重要,除了喜欢十进制的非常旧的浏览器。添加了十六进制支持,因为 Unicode 代码点以十六进制表示法引用,这使得查找代码点然后添加引用变得更加容易,而无需转换为十进制

U+007D

=

&#x007D;

回答你的问题:

这个答案说十六进制是针对 Unicode 的;如果您<meta charset="utf-8">在文档中使用标签,这是否意味着应该使用十六进制?

您必须了解 UTF-8 向后兼容 ASCII / ISO-8859-1。所以 UTF-8 的前 256 个字符在 ASCII 和 UTF-8 中是相同的。十六进制对于 UTF-8 来说更容易,因为截至 2013 年有 1,114,112 个 Unicode 代码点。所以写&#x110000;比写更容易&#1114112;等等。