【问题标题】:Declaring character encodings in HTML [duplicate]在 HTML 中声明字符编码 [重复]
【发布时间】:2016-11-11 13:06:20
【问题描述】:

我应该像这样声明字符集:

<meta http-equiv="content-type" content="text/html" charset="utf-8" />

或者像这样:

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

或者两者都有效?

【问题讨论】:

  • 没什么区别,但如果你看到大多数网页只使用 charset="utf-8"

标签: html character-encoding meta http-equiv


【解决方案1】:

根据@Alohci 的评论进行了更新。

W3C's documentation on &lt;meta http-equiv="..."&gt;:

编码声明状态(http-equiv="content-type"

编码声明状态只是设置charset属性的另一种形式:它是一个字符编码声明。该状态的用户代理要求全部由规范的解析部分处理。

对于在编码声明状态下具有http-equiv 属性的元元素,内容属性必须具有一个字符串的值,该值是不区分大小写的 ASCII 匹配项其中包括:文字字符串"text/html;"可选地后跟任意数量的空格字符,后跟文字字符串"charset=",后跟字符编码声明的字符编码标签之一.

文档不得同时包含具有http-equiv 属性处于编码声明状态的元元素和具有charset 属性的元元素。 ( 强调我的

因此,如果要使用http-equiv,则必须使用&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;。但是,这只是&lt;meta charset="utf-8"&gt; 的另一种说法,所以请使用缩写形式。

【讨论】:

  • MDN 错误。 &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt; 在 HTML5 中并非无效或过时。请参阅w3c.github.io/html/… 或在验证器中尝试。
  • @Alohci 感谢您指出这一点。我更正了我的答案。
【解决方案2】:

因为您以

开头的文档
<!DOCTYPE html>

我怀疑是否有必要指定内容类型。相反,只需指定编码/字符集:

<head>
   <meta charset="UTF-8">
</head>

【讨论】:

    【解决方案3】:

    这两个声明都是有效的,你总是可以使用简短的等效版本:

    <meta charset="utf-8" /> 
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 2012-08-27
      • 2015-12-05
      • 2014-09-12
      • 1970-01-01
      • 2015-01-25
      相关资源
      最近更新 更多