Web 浏览器中的优先字符集检测

Priority charset detection in web browser

我真的很想知道在网络浏览器中处理编码指示的优先级(HTML5)。请回答请提供来源。

  1. HTTP header
  2. 物料清单
  3. 启发式/用户设置

我不知道 BOM 的数量(第二个[https://blog.whatwg.org/the-road-to-html-5-character-encoding], somewhere first[How HTML meta charset works)。我不知道浏览器何时根据用户设置的启发式方法进行检测。

来源:http://www.w3.org/TR/html401/charset.html#h-5.2.2 , http://www.w3.org/TR/html5-diff/#character-encoding , http://www.w3.org/TR/html5/document-metadata.html#charset

非常感谢。

BOM 应该在 HTTP header 之前。 [1][2]

官方有很多documents that say HTTP header goes before the BOM. Apparently,我们忽略掉,倒序,后者优先

因此:

  1. 物料清单
  2. HTTP Header Content-Type:
  3. <meta> / @charset 对于 css
  4. 环境(parent <iframe><link> 元素的 charset 属性,parent 文档的编码等)and/or 启发式

我不太确定(还没有真正研究过)4. 中的优先级。此外,[1] 将 "user setting" 放在 BOM 之前。

[1] 注意:此步骤发生在下一步骤之前遵守 HTTP Content-Type header 是故意违反HTTP 规范的一部分,出于与遗留内容最大程度兼容的愿望。 -- https://www.w3.org/TR/html5/syntax.html#determining-the-character-encoding

[2] 注:解码算法优先考虑字节顺序标记(BOM),仅在none时使用回退找到了。 -- https://www.w3.org/TR/css-syntax-3/#input-byte-stream