必须用UTF-8,因浏览器严格按声明解码,若HTML实际为UTF-8却声明GBK,会导致中文、emoji等乱码;且<meta charset="UTF-8">须置于<head>最前,文件保存编码也必须匹配UTF-8。

charset 必须设为 UTF-8,其他值(如 GBK、ISO-8859-1)在现代网页中基本不可用,会导致中文乱码、特殊符号显示异常或表单提交失败。
为什么一定要用 UTF-8?
浏览器默认不猜编码,它只按你声明的编码去解码字节流。如果 HTML 文件实际保存为 UTF-8(绝大多数编辑器默认),但 <meta charset="GBK"> 告诉浏览器“这是 GBK”,就会把两个 UTF-8 字节强行当一个 GBK 字符解析——结果就是 、、 或一堆问号。
- 中文、 emoji、数学符号、日韩越文等全部支持,无需切换编码
- 所有主流浏览器、服务器、CDN、搜索引擎都默认兼容
UTF-8 -
GBK只能覆盖简体中文,遇到繁体、emoji 或用户粘贴的微信文字就崩
<meta charset> 必须放在 <head> 最前面
这个标签必须是 <head> 中**第一个**有实际作用的子元素(注释不算)。位置错位会导致浏览器已开始解析内容时才读到编码声明,前几行文字仍按默认编码(通常是 ISO-8859-1)渲染,出现“标题正常,正文乱码”的诡异现象。
- ✅ 正确顺序:
<meta charset="UTF-8">→<title>→<link>→ 其他 - ❌ 错误写法:
<title>在<meta charset>之前;或<meta>被包在<script>后面 - VS Code 用户:输入
!+ Tab 生成的 HTML5 模板,默认就把<meta charset="UTF-8">放对了位置
文件保存编码也要匹配 UTF-8
声明只是“告诉”浏览器怎么读,文件本身得确实是 UTF-8 编码。记事本、VS Code、Sublime 等工具右下角通常显示当前编码格式,点它就能切换。保存时务必选 UTF-8(不是 UTF-8 with BOM)。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
立即学习“前端免费学习笔记(深入)”;
- Windows 记事本默认存为
ANSI(即 GBK),直接保存会丢字符——必须手动选“另存为”→ 编码选UTF-8 - VS Code 默认就是 UTF-8,但若打开一个乱码文件,右下角会提示“编码:GBK”,点击后选“通过编码重新打开”→
UTF-8 -
UTF-8 with BOM开头三个字节EF BB BF可能被某些旧服务当作非法字符,导致 CSS/JS 加载失败
检查是否真生效的最快方法
别只看页面显示正常——要验证浏览器**实际用了什么编码**:
- Chrome / Edge:F12 → 右上角
⋯→ More tools → Encoding → 确认显示UTF-8 - 直接在地址栏输
view-source:file:///xxx/index.html,看第一行<meta charset="UTF-8">是否存在且无拼写错误(比如写成charser) - 用命令行快速验证:
file -i index.html(macOS/Linux)或Get-Content index.html -Encoding UTF8(PowerShell)
最常被忽略的是:编辑器保存编码和 HTML 中声明的编码不一致,二者必须严丝合缝,缺一不可。


















