为了定义HTML5 Doctype的字符集,我应该使用哪种符号?

短:<meta charset=“utf-8”/>长:<meta http equiv=“Content Type”Content=“text/html;charset=utf-8”/>


当前回答

要在电子邮件中嵌入签名,我会使用长版本:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

原因是没有多少电子邮件阅读器使用HTML5,所以最好使用旧的HTML样式。实际上,使用表也比使用divs+CSS更好。

其他回答

在HTML5中,它们是等价的。使用较短的,因为它更容易记忆和打字。浏览器支持很好,因为它是为向后兼容而设计的。

虽然不质疑其他答案,但我认为以下内容值得一提。

“长”(http equiv)符号和“短”符号相等。先到者获胜;Web服务器标头将覆盖所有<meta>标记;BOM(字节顺序标记)将覆盖所有内容,在许多情况下,它将影响HTML4(可能还有其他内容);如果您没有声明任何编码,您可能会在浏览器定义的“回退文本编码”中获取文本。在Firefox和Chrome中都不是UTF-8;在没有其他线索的情况下,浏览器将尝试读取您的文档,就好像它是ASCII码一样来获取编码,因此您不能使用任何奇怪的编码(不过,带BOM的UTF-16应该可以);虽然规范规定编码声明必须在文档的前512字节内,但大多数浏览器都会尝试读取更多。

您可以通过运行echo“HTTP/1.1 200 OK”进行测试\r\n内容类型:text/html;charset=windows-1251\r\n\r\nxef\xbb\xbf<!DOCTYPE html><html><head><meta http equiv=“Content Type”Content=“text/html;charset=utf-8”><meta charset=“windows-1251”><title>привет</title></head><body>повт</body></html>'|nc-lp 4500,并将浏览器指向localhost:4500。(当然,您需要更改或删除零件。BOM零件是\xef\xbb\xbf。请注意外壳的编码。)

请注意,显式声明编码非常重要。让浏览器猜测可能会导致安全问题。

这两种形式的元字符集声明都是等效的,并且在不同的浏览器之间应该是相同的。但是,在将web文件字符集声明为UTF-8时,需要记住以下几点:

以UTF-8编码保存文件,不使用字节顺序标记(BOM)。使用元字符集在HTML文件中声明编码(如上所述)。web服务器必须为文件提供服务,在Content-Type HTTP标头中声明UTF-8编码。

默认情况下,Apache服务器配置为提供ISO-8859-1中的文件,因此您需要在.htaccess文件中添加以下行:

AddDefaultCharset UTF-8

这将配置Apache以提供在Content-Type响应标头中声明UTF-8编码的文件,但首先必须以UTF-8(无BOM)保存文件。

记事本无法在没有BOM的情况下以UTF-8格式保存文件。可以使用Notepad++的免费编辑器。在程序菜单栏上,选择“编码>编码为UTF-8,不带BOM”。您还可以使用“编码>转换为UTF-8而不使用BOM”打开文件并以UTF-8格式重新保存。

有关维基百科字节顺序标记(BOM)的更多信息。

<meta charset=“utf-8”>是为HTML5引入的。

如文件中所述,两者均有效。然而,<meta charset=“utf-8”>仅适用于HTML5(并且更容易键入/记住)。

在适当的时候,旧风格在不久的将来必然会被弃用。我会坚持使用新的<meta charset=“utf-8”>。只有一条路,但向上。就科技而言,这是在逐步淘汰旧的(真的,真的很快)

文档:HTML元字符集属性-W3Schools

使用HTML5时,请在web浏览器中使用<meta charset=“utf-8”/>。

当使用HTML4或XHTML时,或者对于过时的DOM解析器(如PHP 5.3中的DOMDocument),请使用<meta-http-equiv=“Content-Type”Content=“text/html;charset=utf-8”/>。