vs <meta http-equiv =“Content-Type”/>

时间:2011-01-14 22:06:48

标签: html5 meta-tags doctype

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

  1. 短:

    <meta charset="utf-8" /> 
    
  2. 长:

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

9 个答案:

答案 0 :(得分:1039)

在HTML5中,它们是等效的。使用较短的一个,它更容易记住和键入。 Browser support is fine因为它是为了向后兼容而设计的。

答案 1 :(得分:245)

meta charset声明的两种形式都是等效的,并且应该在不同浏览器中使用相同的形式。但是,在将您的Web文件字符集声明为UTF-8时,您需要记住一些事项:

  1. 以UTF-8编码保存您的文件,不用 byte-order mark(BOM)。
  2. 使用meta charset(如上所述)在HTML文件中声明编码。
  3. 您的网络服务器必须为您的文件提供服务,并在Content-Type HTTP标头中声明UTF-8编码。
  4. 默认情况下,Apache服务器配置为提供ISO-8859-1中的文件,因此您需要将以下行添加到.htaccess文件中:

    AddDefaultCharset UTF-8
    

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

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

    有关Byte Order Mark (BOM) at Wikipedia的更多信息。

答案 2 :(得分:81)

答案 3 :(得分:30)

<meta charset="utf-8">与/ HTML5一起推出。

如文档中所述,两者都有效。但是,<meta charset="utf-8">仅适用于HTML5(更容易输入/记住)。

在适当的时候,旧样式必将在不久的将来被弃用。我坚持使用新<meta charset="utf-8">

只有一种方式,但是向上。在科技的案例中,逐步淘汰旧的(真的,非常快)

文档: HTML meta charset Attribute—W3Schools

答案 4 :(得分:17)

虽然没有对其他答案提出异议,但我认为以下值得一提。

  1. “长”(http-equiv)符号和“短”符号相同,以先到者为准;
  2. Web服务器标头将覆盖所有<meta>标记;
  3. BOM(字节顺序标记)将覆盖所有内容,在许多情况下它会影响html 4(也可能是其他东西);
  4. 如果您没有声明任何编码,您可能会在“后备文本编码”中获取您的浏览器定义的文本。在Firefox和Chrome中都没有utf-8;
  5. 如果没有其他线索,浏览器将尝试读取您的文档,就好像它是用ASCII来获取编码一样,因此您不能使用任何奇怪的编码(但是,带有BOM的utf-16应该这样做);
  6. 虽然规范说编码声明必须在文档的前512个字节内,但大多数浏览器会尝试阅读更多。
  7. 您可以运行echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\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进行测试。 (当然,您需要更改或删除部件。物料清单部件为\xef\xbb\xbf。请注意您的shell编码。)

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

答案 5 :(得分:10)

使用HTML5时,使用<meta charset="utf-8" />用于网络浏览器。

使用HTML4或XHTML时使用<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,或者使用过时的dom解析器,例如php 5.3中的DOMDocument

答案 6 :(得分:2)

有一些基于Mozilla Foundationsitepoint

的新闻
  

不要使用此值(http-equiv=content-type),因为它已过时。   首选&lt; charset&gt;上的meta属性元件。   enter image description here

答案 7 :(得分:0)

要在电子邮件上嵌入签名,我将使用长版:

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

原因是,没有太多的电子邮件阅读器使用html5,因此始终最好使用旧的html样式。实际上,使用表比使用divs + css更好。

答案 8 :(得分:0)

我建议这样做,以使事情与HTML5保持一致。

<meta charset="UTF-8">

EG:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
</html>