HTML 与 HTML 编码字符中非 ASCII 字符的影响

Effects of Non-ASCII Characters in HTML vs HTML Encoded Characters

我今天早些时候遇到一个问题,由于 kramdown 文件中的一些非 ASCII 字符,有人无法编译静态站点。在编写一个在我们的内容中找到这些字符的小脚本时,我 运行 跨越了大量非 HTML 编码的特殊字符。

将这些字符直接包含在 HTML 中有什么含义?取©字符。

If I include the character directly in HTML, 它似乎在我的浏览器中正确呈现。话虽这么说,我不知道那些没有安装支持这些字符的字体的人会有什么副作用。

将这些非 ASCII 字符留在 HTML 中有什么副作用?我知道在某些情况下它会导致出现 st运行ge (?) 字符,但我想要有关如何呈现这些特殊字符的更多具体信息。

如果我 HTML 对这些特殊字符进行编码,而客户端没有支持它们的字体,它会显示相同的 (?) 字符吗?使用 HTML 编码字符与非编码字符之间有什么有意义的区别吗?usign

Is there any meaningful difference between using the HTML-encoded vs non encoded characters?

不是一般情况下浏览器能够显示它们。 如果你想使用这些你称之为 "non-standard" 字符(这是非常标准的字符,而不是 ASCII 字符),你应该指定一个编码,最好是 utf-8。 HTML5 这样做的方式(向后兼容并被几乎所有浏览器支持)是

<meta charset="utf-8">

就是说,一些从 markdown 等编译静态 HTML 的工具可能会有问题,但这取决于工具。在那里使用像 &copy; 这样的实体会更安全;您也可以在不指定编码的情况下使用它。

这还不是全部,因为浏览器解码文件的方式也会受到其他因素的影响,例如 HTTP 响应 Headers。此外,即使您省略它,正如您所观察到的,浏览器会尽其所能来正确解析它,但不能保证。