HTML5 是否需要“字符集”属性?

新手上路,请多包涵

W3C HTML5 与 HTML4 的区别 工作草案指出:

对于 HTML 语法,作者需要声明字符编码。

“必需”是什么意思?

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

基本上,我想知道是否真的有必要包含 <meta charset=""> ,或者浏览器是否在 99% 的情况下都会使用正确的编码。

原文由 twiz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 339
2 个回答

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

如果未指定,当今大多数 Web 服务器将发回 HTML 文本数据的 Content-Type 标头中的字符集。如果 Web 服务器不发回带有 Content-Type 标头的字符集, 并且 文件不包含 BOM ,并且 页面不包含 <meta charset="blah"> 声明,浏览器将具有通常基于主机语言设置的默认编码。如果这与文件的实际字符编码不匹配,那么某些字符将无法正常显示。

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

W3C 提供了一份 文档,概述了三种方法的优先级规则, 说明顺序是 HTTP 标头、BOM,然后是文档内规范(元标记)。

原文由 hrunting 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据 Google PageSpeed 浏览器扩展,在元元素中声明字符集“禁用 IE8 的先行功能”,这显然会强制它串行下载所有内容。

我的理解是 <meta charset-"utf-8"> 是有效 HTML5 所必需的,但这就是我开始浏览这里的原因。

该规范草案对我来说似乎很清楚,因为我通过 .htaccess 添加了 HTTP 标头,所以我将开始将其排除在外……即使我很想不这样做,只是让 IE8 用户多受点苦。

谢谢。

@Jules Mazur 你对这些要点有什么参考吗?我所做的大部分工作是搜索引擎优化,可访问性对我来说很重要,如果是这样的话,我非常愿意离开元声明。

原文由 adam-asdf 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题