浏览器如何处理指定字符编码的<meta>标记?

Joe*_*Lee 5 html character-encoding meta-tags

假设浏览器遇到<meta>指定字符编码的标记,如下所示:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

它是否从一开始就重新解析页面开始,因为该部分中的某些前面的字符<head>可能被错误地解释了?还是有一些其他约束阻止先前的字符被错误地解释?

RoT*_*oRa 4

据我所知,浏览器在找到字符集声明后不会返回,<head>并且它们假定到目前为止是 ASCII 兼容的字符集。不幸的是我找不到参考资料来证实这一点。

如果服务器已经提供了 Content-Type HTTP 标头,则确认浏览器将忽略 Content-Type 元元素,因此您无法使用元素覆盖“错误”的服务器端字符集<meta>

字符集声明的要点<meta>是针对不由 HTTP 服务器提供服务器的 HTML 文档。

这意味着您不应依赖<meta>HTML 文件中的字符集声明,而应配置 HTTP 服务器以提供正确的字符集。如果由于某种原因您必须依赖<meta>字符集声明,那么您应该只使用 ASCII 字符,并将其尽可能早地放置在位置<head>,最好是作为第一个元素。