html 文件必须以 utf-8 无 bom 编码顶格书写 doctype,否则 ie/旧 edge 进入怪异模式导致多语言字符乱码;http content-type 优先于 meta charset;所有前端资源须统一 utf-8 无 bom;viewport 标签缺失或错误将破坏移动端多语言布局。

DOCTYPE 必须顶格且无 BOM,否则国际化字符直接乱码
HTML 文件开头若有 UTF-8 BOM(EF BB BF)或空格、注释,IE/旧 Edge 会进怪异模式,此时 <meta charset="UTF-8"> 失效,浏览器 fallback 到系统默认编码(Windows 是 GBK),中文、日文、阿拉伯文等非 ASCII 字符全变 或方块。
- VS Code 右下角编码显示必须是
UTF-8 without BOM,不是UTF-8 - 用
xxd或 VS Code 插件查文件头:正常 UTF-8 无 BOM 应以3C 21(即)开头;有 BOM 则是 <code>EF BB BF 3C 21 - 服务端模板(如 PHP、Jinja)可能在
前输出空白或换行,需检查 <code>ob_start()或模板 include 前后是否有不可见字符
HTTP Content-Type 和 meta charset 冲突时,以 HTTP 头为准
当服务器返回的 Content-Type: text/html; charset=GBK 和 HTML 中的 <meta charset="UTF-8"> 不一致,浏览器优先信 HTTP 头——哪怕你写了 UTF-8,实际仍按 GBK 解码,多语言文本瞬间崩坏。
- Apache:在站点根目录加
.htaccess,写AddDefaultCharset UTF-8 - Nginx:在
server或location块中加charset utf-8;,**不要**用add_header Content-Type,它会覆盖原有 header 导致 MIME 类型丢失 - Python
http.server默认不发 charset,此时<meta charset>才生效;Express 的express.static()默认带charset=UTF-8,但若静态资源(CSS/JS)本身存为 GBK,照样报InvalidCharacterError
所有前端资源(HTML/CSS/JS/JSON)必须统一为 UTF-8 无 BOM
只要任一环节用错编码,整个链路就断:HTML 读对了,但引入的 lang-zh-CN.json 是 ANSI 编码,fetch() 解析失败;CSS 里 content: "日本語" 存成 GBK,渲染成乱码;JS 字符串含 emoji 或阿拉伯数字,保存为 ISO-8859-1 就直接 SyntaxError。
- VS Code / Sublime Text / Notepad++ 保存时务必选
UTF-8,**取消勾选 “with BOM”** - Webpack/Vite 构建时,确认
raw-loader或json-loader没强制转码;Rollup 插件如@rollup/plugin-json默认按 UTF-8 读,但若源文件带 BOM,可能触发解析异常 - Git 提交前用
git config --global core.autocrlf input避免 Windows 换行符干扰,再加.editorconfig统一charset=utf-8
viewport 标签缺失或写错,移动端多语言布局直接失效
没 <meta name="viewport" content="width=device-width, initial-scale=1">,iOS Safari 和 Android Chrome 会用 980px 宽度渲染页面,中文长词、阿拉伯从右向左文字被强行截断或换行错乱,用户得左右拖拽才能读完一句话。
- 该标签必须放在
最靠前位置,不能被<script></script>或<link>挡住——Vue/React 的public/index.html若被构建脚本覆盖,实际没生效 - 别写
content="width=375"这类固定值,也别漏掉initial-scale=1,否则高 DPR 设备(如 iPhone)字体缩放失准,多语言 UI 元素(如希伯来语按钮)尺寸错位 - 验证方式:Chrome DevTools → Toggle device toolbar → 选任意手机型号,看是否自动适配宽度、文字是否可读、RTL 文本(如阿拉伯语)是否从右向左正确对齐
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











