23

通过 HTTP 检索的示例 HTML 文档缺少:

  • HTTPContent-Type标头
  • 一个 HTML<meta charset="<character encoding>" />
  • 一个 HTML<meta http-equiv='Content-Type' content='Type=text/html; charset=<character encoding>'>

关于 HTML5,是否将默认值(例如 UTF-8)假定为字符编码?还是完全由读取 HTML 文档的应用程序来选择默认值?

4

1 回答 1

21

使用以下规则确定字符集:

  1. 用户覆盖。
  2. “内容类型”字段中的 HTTP“字符集”参数。
  3. HTML 文档本身中任何其他数据之前的字节顺序标记。
  4. 具有“字符集”属性的 META 声明。
  5. 将“http-equiv”属性设置为“Content-Type”并为“charset”设置值的 META 声明。
  6. 未指定的启发式分析。

...进而...

  1. 根据 Unicode 技术标准 #22 中定义的字符集别名匹配规则规范化给定的字符编码字符串。
  2. 覆盖一些有问题的编码,即有意将某些编码视为不同的编码。最常见的覆盖是将 US-ASCII 和 ISO-8859-1 视为 Windows-1252,但此表中还列出了其他几种编码覆盖。正如规范所指出的,“根据上表将某些编码视为其他编码的要求是故意违反 W3C 字符模型规范。”

但最重要的是:

您应该始终在每个HTML 文档上指定字符编码,否则会发生不好的事情。你可以用困难的方式(HTTP Content-Type 标头)、简单的方式(<meta http-equiv>声明)或新的方式(<meta charset>属性)来做,但请这样做。网络谢谢你。

资料来源:

于 2012-09-13T12:22:13.807 回答