在HTML中声明字符编码

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

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

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

或者像这样:
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

或者两种都可以吗?

1
没有什么区别,但是如果你看到大多数网页只使用charset="utf-8"。 - mont_
3个回答

4
这两种声明都是有效的,你总是可以使用简短的等效版本:
<meta charset="utf-8" /> 

希望这可以帮到您。

3
因为你使用

开始一个文档。
<!DOCTYPE html>

我认为指定内容类型并不是必需的。相反,只需要指定编码/字符集:

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

2

根据@Alohci的评论更新。

请参阅W3C关于<meta http-equiv="...">的文档:

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

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

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

一个文档不能同时包含既有编码声明状态下带有http-equiv属性的meta元素,又有用charset属性的meta元素。强调我的

因此,如果您要使用http-equiv,它必须被用作<meta http-equiv="Content-Type" content="text/html; charset=utf-8">。但这只是另一种说法<meta charset="utf-8">,所以请使用缩写形式。


MDN是错误的。在HTML5中,<meta http-equiv="Content-Type" content="text/html; charset=utf-8">不是无效或过时的。请参见http://w3c.github.io/html/document-metadata.html#statedef-http-equiv-content-type或尝试使用验证器进行验证。 - Alohci
@Alohci 谢谢你指出这个问题。我已经更正了我的答案。 - Sinan Ünür

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接