必须紧贴标签后无任何字符,且文件编码、http响应头content-type中的charset三者须统一为utf-8(带短横线),否则易致中文乱码。

meta charset必须放在head最前面
HTML里<meta charset>如果位置不对,浏览器可能在解析到它之前就用默认编码(比如GBK)去读取页面,导致中文乱码。尤其当页面开头有BOM、空格或注释时,风险更高。
- 必须紧贴
开始标签之后,前面不能有任何字符(包括空格、换行、注释) - 推荐写法:
<meta charset="UTF-8">,不要加http-equiv或content冗余属性 - 如果用了
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">,它和<meta charset>功能重复,且优先级更低,建议删掉
charset值写UTF-8别写utf8或UTF8
虽然多数浏览器能容错识别utf8或UTF8,但W3C标准只认UTF-8(带短横线、大写U、小写f、大写T、数字8)。某些老旧工具链(如部分构建插件、静态检查器)会报错或忽略非标准写法。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 正确:
<meta charset="UTF-8"> - 错误:
<meta charset="utf8">、<meta charset="UTF8">、<meta charset="utf-8"> - 服务器返回的
Content-Type头中也应保持一致,例如:text/html; charset=UTF-8
文件实际编码必须和meta charset声明一致
声明是UTF-8,但文件本身存成GBK或ANSI,浏览器按UTF-8解码就会出错——这不是meta的问题,而是编辑器保存设置没调对。
- VS Code:右下角看编码显示(如“UTF-8”),点它 → “Save with Encoding” → 选
UTF-8 - Sublime Text:File → Save with Encoding → UTF-8
- 确认无BOM:UTF-8 with BOM会导致某些环境(尤其是PHP include场景)头部多出不可见字符,引发
Cannot modify header information等错误
服务端响应头比meta charset优先级更高
如果HTTP响应头里有Content-Type: text/html; charset=GBK,浏览器会直接忽略<meta charset>,哪怕它写的是UTF-8。这种情况常见于Nginx/Apache配置不当,或后端框架(如PHP的header())硬编码了charset。
- 用浏览器开发者工具 → Network → 查看Response Headers里的
Content-Type - Nginx示例修正:去掉
charset gbk;,或明确设为charset utf-8; - PHP中避免
header('Content-Type: text/html; charset=gbk');这类手动设置
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










