为了定义HTML5 Doctype的字符集,我应该使用哪种符号?
短:<meta charset=“utf-8”/>长:<meta http equiv=“Content Type”Content=“text/html;charset=utf-8”/>
为了定义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”/>。