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

时间:2015-04-10 03:00:40

标签: html5 character-encoding http-headers w3c byte-order-mark

我真的需要知道在Web浏览器(HTML5)中处理编码指示的优先级。请与消息来源联系。

  1. Http header
  2. BOM
  3. 启发式/用户设置
  4. 我不知道BOM的数量(第二个[https://blog.whatwg.org/the-road-to-html-5-character-encoding],某个地方[How HTML meta charset works)。我不知道浏览器何时根据用户设置检测到何时使用启发式方法。

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

    Big thx。

1 个答案:

答案 0 :(得分:1)

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

许多官方documents that say HTTP标头位于BOM之前。 Apparently,我们要忽略它们并颠倒顺序,使后者具有更高的优先权。

<强>因此:

  1. BOM
  2. HTTP标头Content-Type:
  3. <meta> / @charset for css
  4. 环境(charset<iframe>元素的<link>属性,父文档的编码等)和/或启发式
  5. 我不确定(还没有真正研究过)4.内的优先顺序。此外, [1] 将&#34;用户设置&#34;在BOM之前。

    [1] 注意:此步骤发生在下一个尊重HTTP Content-Type标头之前,是故意违反HTTP规范,其动机是希望最大限度地兼容遗留内容。 -  https://www.w3.org/TR/html5/syntax.html#determining-the-character-encoding

    [2] 注意:解码算法优先使用字节顺序标记(BOM),并且仅在找不到时才使用回退。 - {{ 3}}