【问题标题】:Priority charset detection in web browserWeb 浏览器中的优先级字符集检测
【发布时间】:2015-06-15 15:38:49
【问题描述】:

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

  1. Http 标头
  2. 物料清单
  3. 启发式/用户设置

我不知道 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

非常感谢。

【问题讨论】:

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


    【解决方案1】:

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

    在BOM之前有很多官方的documentsthatsayHTTP标头。 Apparently,我们将忽略它们并颠倒顺序,使后者具有更高的优先级。

    因此:

    1. 物料清单
    2. HTTP 标头Content-Type:
    3. <meta> / @charset 用于 css
    4. 环境(父<iframe><link>元素的charset属性,父文档的编码等)和/或启发式

    我不太确定(还没有真正研究过)4. 中的优先级。此外,[1] 将“用户设置”放在 BOM 之前。

    [1]注意:这一步发生在下一个遵循 HTTP Content-Type 标头之前是故意违反 HTTP 规范的,其动机是希望最大程度地兼容带有旧内容。 -- https://www.w3.org/TR/html5/syntax.html#determining-the-character-encoding

    [2]注意:解码算法优先考虑字节顺序标记(BOM),只有在没有找到时才使用回退。 -- @987654326 @

    【讨论】:

    • BOM 之前的“用户设置”听起来很疯狂:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多