必须放在最前面,因浏览器解析html时仅扫描前1024字节找charset声明,靠后则可能用系统默认编码(如gbk/iso-8859-1)解析中文等非ascii字符,导致乱码、dom异常或脚本错误。

在 HTML5 中,字符编码声明应放在 标签内最开头的位置,且必须使用 <meta charset="UTF-8"> 形式,不带 http-equiv 或 content 的冗余写法。
为什么必须放在 head 最前面?
浏览器解析 HTML 时,会从文档开头逐字节读取。如果字符编码声明靠后,而前面恰好有非 ASCII 字符(比如中文标题、注释或 BOM),可能导致解析错乱,出现乱码或样式/脚本加载异常。因此,<meta charset> 应紧随 和 开始标签之后,越早越好。
正确写法(唯一推荐)
只需一行,简洁明确:
注意:
- 无需写成
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">—— 这是 HTML4 的旧写法,HTML5 不推荐 - charset 值建议统一用 UTF-8(全小写),不区分大小写但惯例小写
- 不能加引号以外的空格或换行干扰(如
<meta charset="UTF-8">虽可解析,但不规范)
常见错误与规避
以下写法均不符合 HTML5 规范或存在风险:
-
<meta charset="utf8">—— 缺少短横线,“utf8”不是标准值,应为 "UTF-8" - 把
<meta charset>放在<title></title>或<link>后面 —— 可能导致标题或外部资源解析出错 - 同时存在多个 charset 声明(如 HTTP 头 + meta)—— 以第一个有效的 meta 为准,多余声明易引发混淆
配合其他设置效果更稳
单靠 meta 标签还不够,建议同步确认:
- 保存 HTML 文件时,用编辑器设为 UTF-8 无 BOM 编码
- 服务器 HTTP 响应头中包含
Content-Type: text/html; charset=UTF-8(优先级高于 meta,但 meta 是兜底保障) - 避免在
开头插入任何内容(包括注释、空格、BOM 字节)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











