HTML和字符编码与HTML实体

4
写HTML文档时,使用特殊字符是可以接受的,例如带下加符号的大写字母C作为普通文本:Ç,或者使用此字符的HTML实体名称&Ccedil。我见过两种用法,但肯定有规则来指导适当的用法以及一种方法的优势。例如,这个网站维护该字符的原始形式,而其他网站可能最终将其呈现为方块。

当你不确定是否需要它,而且对实体名称不确定时,你可以始终使用数字实体:"Ç"(字符代码199)可以表示为"Ç"(十进制)或者"Ç"(十六进制)。这种转换可以通过简单的转换脚本完成。 - bart
你应该小心,我在网上看到过一些JavaScript代码会在转换时出现问题。 - Incognito
3个回答

9

真实的字符:

  • 如果您的系统设置使用这些字符的语言,则更容易输入
  • 生成更易读的代码
  • 节省字节

HTML实体:

  • 让您基本上忘记字符编码

显然,在HTML中具有特殊含义的字符(例如<&等)仍然需要用实体表示。


4
如果您使用UTF-8字符编码,则大多数实体字符(除了&amp;&gt;&lt;之外)变得多余。
如果您没有使用UTF-8,则需要为所有内容使用实体。

在这里,“使用UTF-8编码”意味着“将您的页面作为UTF-8编码进行服务”。 - Matt Ball
1
如果您没有使用UTF-8,则需要为所有内容使用实体 - 这是不正确的。您只需要为当前字符编码无法表示的任何内容使用实体。例如,在ISO-8859-1中,“Ç”是可以接受的。 - Matthew Wilson
2
UTF-8 不是唯一的非 ASCII 编码(即使它是绝大多数西方文档最合适的编码方式)。 - Quentin
那不对。如果您的页面编码(文件格式)是ISO-Latin-1或Windows CP1252,并且Web服务器将其返回为此类编码,则“Ç”(=chr(199))将正常工作。但是,如果有疑问,实体更安全。 - bart
@所有人 - 是的,我知道我把它简化为UTF-8或者什么都不用。但是坦白地说,如果你要指定除默认值以外的任何东西,你可能会选择UTF-8。无论如何,这些都是很好的观点。谢谢。 - Spudley

2

这完全取决于文档的字符编码。如果您不确定是否应使用常规文本还是编码版本,则可以通过W3C验证器运行您的页面。

考虑以下代码:

<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>Stuff</title>
</head>
<body>
 <p>©</p>
 <p>&#169;</p>
</body>
</html>

文档编码设置为UTF-8,但在验证时返回错误:
“抱歉,无法验证此文档,因为第7行包含一个或多个字节,我无法解释为UTF-8(换句话说,找到的字节不是指定字符编码中的有效值)。请检查文件内容和字符编码指示。”

2
如果文档以正确的UTF-8格式提供,这将正常工作。 - Matthew Wilson
1
所有的回答都很好,但我选择接受这个答案是因为你提供了一个验证方法。 - Incognito
我没有进行负面评价,但是W3C验证器并不能检查文档声明的编码是否与其实际编码相匹配。它只能在某些情况下检测到由不匹配引起的问题。 - Jukka K. Korpela

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