HTML5:使用字符实体还是直接使用字符,哪个更好?

36

我最近注意到很多高知名度的网站直接在它们的源代码中使用字符,例如:

<q>“Hi there”</q>

不要:

<q>&ldquo;Hi there&rdquo;</q>

这两种方式哪种更好?过去我一直使用实体,但是直接使用字符似乎更易读,并且在Unicode文档中应该也可以使用。


1
显然,如果直接使用字符可能会在非Unicode文档中出现问题,但是如果使用UTF-8,则应该可以正常工作。+1,好问题;我也很想知道。 - Thomas Shields
2
你所说的“非Unicode文档”是什么? :) (更严肃地说,现在已经是2012年了,我们应该在十年前就放弃ISO-8859及其专有的朋友们了)。 - Quentin
4
HTML5规范中有关字符集的部分也指出,“鼓励作者使用Unicode”。 http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset - mikemaccana
5个回答

26
如果编码为UTF-8,则普通字符将正常工作,没有理由不使用它们。不支持UTF-8的浏览器在显示现代网页时会有许多其他问题,所以不用担心这个问题。
因此,使用这些字符更容易阅读,我更喜欢使用它们。
这也可以节省几个字节,这很好,尽管使用压缩和缩小文件大小可以获得更多的优势。

9
另一个优点是,如果您默认使用实际字符,则用户提交的内容即使未编码也会显示正确 - 例如,在我的博客上,我有一个纯文本读取选项,如果我使用HTML实体,则无法正常工作。 - Thomas Shields

2

直接使用字符更好,可以使代码更易于阅读。

Google的HTML样式指南也提倡这种做法。该指南可在此处找到: Google HTML/CSS样式指南


2
我能看到字符编码的主要优势是,即使页面被解释为ASCII,它们也会显示正确。
例如,如果您的页面只是一个原始的HTML文件,在某些服务器上的默认设置将其作为"text/html; charset=ISO-8859-1"(HTTP 1.1中的默认设置)提供。即使您设置了内容类型的元标记,HTTP头的优先级更高。
这是否有影响取决于页面被错误配置的服务器提供的可能性有多大。

1

直接使用字符。它们在源代码中更易于阅读(这很重要,因为人们确实需要编辑它们!)并且需要更少的带宽。


1

所给出的示例在理论上和实践中都是错误的,无论是在HTML5还是在HTML 4中。例如,HTML5关于q标记的讨论指出: “引用元素内容的引号标点符号(如引号)不得立即出现在q元素之前、之后或之内;它们将由用户代理插入到渲染中。”

也就是说,要么使用´q'标记,要么使用标点符号,而不是两者兼用。后者在所有实际情况下都更好。

关于字符与实体引用的问题,前者更易读,但您需要知道如何将数据保存为UTF-8并正确声明编码。这并不是什么高深的科学,通常更好。但如果您的创作环境对UTF-8不友好,那么使用实体引用也无需感到羞耻。


1
我实际上是通过CSS添加引号的 - 我只是想在stackoverflow上提供一个更小的示例。另外,这应该作为评论,因为它不是你的答案的一部分。 - mikemaccana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接