html - HTML5 是否需要 "charset"属性?

标签 html character-encoding

W3C "HTML5 differences from HTML4 " 工作草案指出:

For the HTML syntax, authors are required to declare the character encoding.

“必需”是什么意思?

显然,浏览器在没有 charset 的情况下仍会呈现 HTML5元属性。如果没有指定编码,浏览器将使用哪种编码?

基本上,我想知道是否真的有必要包含 <meta charset=""> ,或者如果 99% 的时间浏览器无论如何都会使用正确的编码。

最佳答案

没有必要包括<meta charset="blah"> .正如规范所说,字符集也可以由服务器使用 HTTP Content-Type 指定。 header 或在下载文件的开头包含 Unicode BOM。

今天的大多数网络服务器都会发回 Content-Type 中的字符集如果未指定,则为 HTML 文本数据的 header 。如果 Web 服务器没有发回带有 Content-Type 的字符集header and 文件不包含 BOM and 页面不包含 <meta charset="blah">声明,浏览器将有一个默认编码,通常基于主机的语言设置。如果这与文件的实际字符编码不匹配,则某些字符将无法正常显示。

浏览器会在 99% 的时间使用正确的编码吗?如果您的页面是 UTF-8,可能。如果没有,可能不会。

W3C 提供了一个 document outlining the precendence rules for the three methods这表示顺序是 HTTP header 、BOM,然后是文档内规范(元标记)。

关于html - HTML5 是否需要 "charset"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669352/

相关文章:

javascript - 使用 Javascript 更改 CSS 值

javascript - AngularJS 过滤器错误地返回 HTML

java - 尝试读取文本文件时输出错误

xml - HTTP 'charset' 和 XML 'encoding' 不匹配

character-encoding - 存储需要翻译的资源文本文件的首选编码是什么?

html - 在 &lt;style&gt; 标签中使用 rowspan 属性

html - 将标签文本放在输入字段上

javascript - 我的 HTML5 游戏时不时会卡顿,如何判断是不是垃圾回收引起的?

Mysql utf8mb4 相等

c - 从系统发送到 Unix 的命令中转义字符