30

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

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

“需要”是什么意思?

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

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

4

4 回答 4

36

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

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

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

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

于 2013-02-03T04:15:40.843 回答
5

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

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

该规范草案对我来说似乎很清楚,并且由于我通过添加 HTTP 标头.htaccess,我将开始将其省略...即使我很想不这样做,只是让 IE8 用户遭受更多痛苦。

谢谢。

@Jules Mazur 你对这些观点有什么参考吗?我所做的大部分工作都是 SEO 和可访问性对我来说很重要,如果是这种情况,我非常愿意离开元声明。

于 2013-11-24T23:04:58.867 回答
2

尽可能早地指定文档的字符集很重要(通过Content-Type标题或META标签),否则浏览器将在解析文档之前确定编码,这可能会对页面加载时间产生负面影响

于 2017-02-21T23:27:13.190 回答
1

自 1999 年大部分W3C规范问世以来,标准机构一直在推动供应商(服务器、浏览器和文档应用程序的制造商)遵循编码规则并使用元标记来帮助确定意图。

但由于贪婪、糟糕的浏览器设计和其他因素,多年来很少有人能始终如一地遵循规范。结果,我们有一个破碎的系统。一些供应商,如Mozilla,自 2001 年以来一直遵循元标记标准,而其他供应商,如微软和谷歌,则没有。

出于这个原因,所有 Web 开发人员都应该在他们的所有网页的构建方式中使用应急设计,并使用元标记和其他标准标记来支持网页构建中使用的正确字符编码,尽管对此类标记的支持不一致。换句话说,同时使用元标记类型(<meta charset="UTF-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />),尽管实际上这样的标记很少会决定现代网页如何被现代用户代理编码或解释。

确定浏览器在解释页面时使用什么编码的主要驱动程序通常基于创建网页时使用的软件(如上所述),越来越多的是 UTF-8。这只是Unicode的标准编码方案目前在创建 HTML5 网站时很流行。然后,用户的浏览器可能会跳过元标记并检查页面以猜测作者的编码意图。然而,主要驱动程序是 Web 服务器,其 HTTP 响应标头通常会告诉浏览器使用的编码类型,对于 HTML5 页面来说,它始终是 UTF-8。因为旧网页中使用的旧 ASCII(前 127 个字符)在 99.99% 的情况下完全可以转换为 UTF-8,所以浏览器对所有内容都进行了 UTF-8 编码和解码。由于所有这些后备设计,如今通常根本不需要使用元标记,并且在现代网页解析中完全被忽略了。

元标签的更多历史......在 2000 年,整个元标签辩论比今天糟糕得多。使用嵌入了 Unicode 字符的HTML 4通常意味着页面既不能正确编码也不能正确呈现,尽管服务器 HTTP 标头、使用字符实体和元标记只是因为当时的现代浏览器没有遵循标准并且没有查看元标签、页面编码或编码字符实体。这就是为什么要在失败的标准采用中与所有复杂的支持和系统组合作斗争,最好使用所有技术组合来增加正确呈现网页的“可能性”。

当时我们吸取了宝贵的教训:公司永远不会始终如一地遵循Web 标准。当私营行业没有一致采用标准时,最好始终以各种可能的形式使用所有形式和版本的标记,以最大限度地利用这些标准的各种形式在许多不同的设备上正确查看您的页面,即使今天它们无关紧要(因为浏览器现在解析页面并自行确定编码)。

这应该是所有网页设计所使用的策略,直到我们以某种方式强制普遍采用 Web 标准,现在移动用户代理和HTML5越来越不可能,这迫使我们再次放弃许多本可以更好地执行的 XML 标准标记设计。

于 2017-04-20T15:43:15.493 回答