在 HTML 中声明字符编码 [重复]

Posted

技术标签:

【中文标题】在 HTML 中声明字符编码 [重复]【英文标题】:Declaring character encodings in HTML [duplicate] 【发布时间】: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" 【参考方案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" /> 

希望这会有所帮助。

【讨论】:

以上是关于在 HTML 中声明字符编码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

未声明 HTML 文档的字符编码

Python的学习之旅———基本数据类型(字符编码)

.php 文件的字符编码错误

编码特殊字符以传入url并由javascript读取[重复]

如何在jupyter里声明编码

Python3字符解码与编码