HTML5是否需要charset元标记?

时间:2013-02-03 03:55:22

标签: html5 character-encoding w3c meta

W3C “与HTML4的HTML5差异”工作草案状态:

  

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

“必需”是什么意思?

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

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

以下是链接:http://www.w3.org/TR/html5-diff/#character-encoding

4 个答案:

答案 0 :(得分:28)

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

如果没有指定HTML文本数据,今天的大多数Web服务器都会在Content-Type标头中发回一个字符集。如果Web服务器未发回带有Content-Type标题的字符集,则该文件不包含BOM ,该页面不包含{ {1}}声明,浏览器将具有默认编码,该编码通常基于主机的语言设置。如果这与文件的实际字符编码不匹配,则某些字符将显示不正确。

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

W3C提供document outlining the precendence rules for the three methods,表示订单是HTTP标头,BOM,后面是文档内规范(元标记)。

答案 1 :(得分:4)

根据Google PageSpeed浏览器扩展程序,声明meta元素中的charset“禁用IE8的前瞻功能”,这显然迫使它以串行方式下载所有内容。

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

规范草案对我来说似乎很清楚,因为我通过.htaccess添加了HTTP标题,我将开始将其删除...尽管我很想不去,只是制作IE8用户会受到更多的影响。

感谢。

@Jules Mazur你有关于这些观点的任何参考吗?我所做的大部分是搜索引擎优化和可访问性对我来说很重要,如果是这样的话,我更愿意接受删除元声明。

答案 2 :(得分:1)

尽可能早地指定文档的字符集(通过Content-Type标题或META标记)很重要,否则浏览器将在解析之前确定编码文件,这可能是negatively impact the page load time

答案 3 :(得分:0)

自1999年大部分w3C规范问世以来,标准组织已经推动供应商(服务器和浏览器和文档应用程序的制造商)遵循编码规则并使用元标记来帮助确定意图。但由于贪婪,糟糕的浏览器设计以及其他因素,很少有人多年来一直遵循这些规范。结果,我们有一个破碎的系统。像Mozilla这样的一些供应商自2001年以来一直遵循标准的元标签,而微软和谷歌等其他供应商则没有。{/ p>

因此,所有Web开发人员都应该在构建所有Web页面时使用应急设计,并使用元标记和其他标准标记,尽管支持不一致。换句话说,使用两种元标记类型(<meta charset="UTF-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />),但实际上标记不会决定现代用户代理如何编码或解释您的网页。浏览器使用什么编码的主要驱动因素将是如何通过软件编码该页面,如上所述,其越来越多地是UTF-8,其仅是当前流行的unicode标准。用户的浏览器可能会跳过元标签并检查页面以猜测作者的编码意图。

2000年,整个元市的争论更加糟糕。使用带有嵌入式unicode字符的HTML4通常意味着既没有正确编码也无法正确呈现的页面,尽管服务器HTTP标头,字符实体的使用和元标记只是因为当时的现代浏览器确实遵循标准并且没有& #39;查看元标记,页面编码或编码字符实体。这就是为什么要在失败的标准采用中与支持和系统的所有复杂组合作斗争,最好使用所有技术组合来增加可能性&#39;您的网页正确呈现。

我们当时学到了一个宝贵的教训:公司永远不会始终遵循Web标准。如果私营企业不能始终采用标准,那么始终最好使用所有表格和版本的标记,始终以各种形式最大化您的网页的方式在不同的设备上使用各种形式正确查看标准,即使今天它们并不重要(因为浏览器现在解析页面并自己确定编码)。

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