所有重音字符都应该使用 html 实体吗?

Posted

技术标签:

【中文标题】所有重音字符都应该使用 html 实体吗?【英文标题】:Should all accented characters use html entities? 【发布时间】:2012-03-24 03:06:33 【问题描述】:

我正在处理大量编码为 utf-8 的 html 文件。法语中的重音字符很多。我一直在将它们转换为 HTML 实体,但我注意到即使在 IE5.5(根据 IE 测试人员)中,未转换的重音字符也能正常显示。

为了安全起见,我是否应该关注字符显示并将它们全部转换为 HTML 实体?

【问题讨论】:

【参考方案1】:

您需要记住的是法语是 UTF-8 家族的一部分,还有葡萄牙语、西班牙语等,因此它们将在适当的位置正确显示 UTF-8 标记并提供浏览器也使用 UTF-8页面。

问题是当使用强制另一个字符集的浏览器的人来到页面时,这会破坏未编码的字符。这种情况在巴西发生了一点,许多浏览器没有设置为自动检测字符集,而是设置为 ISO-8859-1,这在这里很常见。

因此,尽可能对所有“特殊”字符进行编码,以实现最普遍的访问。

希望对您有所帮助!

【讨论】:

你知道什么情况会导致浏览器强制使用另一个字符集吗? 有两个因素,第一个也是最常见的是某些语言的某些浏览器不使用 UTF-8 作为默认值,因为它们不是 UTF-8 语言或 UTF-8 不是与这些国家的另一个字符集一样常见,第二个是用户偏好,例如网站需要更改字符集,而用户忘记将其更改回来。【参考方案2】:

如果文件是 UTF-8 编码的,则应将 Content-Type 标头设置为 text/html; charset=UTF-8 并在页面上具有等效的元标记:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

这为浏览器提供了正确显示 UTF-8 字符的所有信息。无需对重音字符进行编码。

【讨论】:

我一直认为这个元标记本身没什么用。为了让浏览器读取标签,它必须知道或通过另一种方式猜测字符集,并且至少要“足够接近”。【参考方案3】:

通常没有理由为重音字母等字符使用实体。使用它们是有效的,但往往会混淆源代码,因此可能会导致错误。

但是,在某些情况下,实体是必需的。原因与浏览器无关,而与创作方有关。特别是,如果您需要使用不能很好地处理重音字母的编辑器或创作程序编辑文件,您可能会发现实体很有用。如果数据必须通过一些有类似问题的软件,这同样适用。在某些情况下,您需要在无法控制 HTTP 标头并且标头指定的编码不允许您直接输入所有字符的环境中工作。

【讨论】:

以上是关于所有重音字符都应该使用 html 实体吗?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法突出显示崇高文本或任何其他文本编辑器中的所有特殊重音字符?

所有连接的应用程序都需要实体框架连接字符串

使用 JavaScript 执行带/不带重音字符的文本匹配

Java 删除字符串上的标点符号(也包括“”和所有这些)维护重音字符

我应该在每个拥有父级的实体上添加一个所有者组件吗?

删除重音和特殊字符[重复]