在 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 <meta http-equiv="...">
:
编码声明状态(
http-equiv="content-type"
)编码声明状态只是设置
charset
属性的另一种形式:它是一个字符编码声明。该状态的用户代理要求全部由规范的解析部分处理。对于在编码声明状态下具有
http-equiv
属性的元元素,内容属性必须具有一个字符串的值,该值是不区分大小写的 ASCII 匹配项其中包括:文字字符串"text/html;"
,可选地后跟任意数量的空格字符,后跟文字字符串"charset="
,后跟字符编码声明的字符编码标签之一.文档不得同时包含具有
http-equiv
属性处于编码声明状态的元元素和具有charset
属性的元元素。 ( 强调我的)
因此,如果要使用http-equiv
,则必须使用<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
。但是,这只是<meta charset="utf-8">
的另一种说法,所以请使用缩写形式。
【讨论】:
MDN 错误。<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
在 HTML5 中并非无效或过时。请参阅w3c.github.io/html/… 或在验证器中尝试。
@Alohci 感谢您指出这一点。我更正了我的答案。【参考方案2】:
因为您以
开头的文档<!DOCTYPE html>
我怀疑是否有必要指定内容类型。相反,只需指定编码/字符集:
<head>
<meta charset="UTF-8">
</head>
【讨论】:
【参考方案3】:这两个声明都是有效的,你总是可以使用简短的等效版本:
<meta charset="utf-8" />
希望这会有所帮助。
【讨论】:
以上是关于在 HTML 中声明字符编码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章