必须置于最前端,因浏览器仅扫描前1024字节查找该声明;若被注释、空格、BOM或等标签阻隔,将回退至系统默认编码(如GBK)导致乱码。
meta charset必须放在最前面
浏览器解析 HTML 时,会在前 1024 字节内查找
声明;如果它被注释、空格、BOM 或其他标签(比如
、
)挡在后面,就可能直接跳过,回退到系统默认
编码
(Windows 下常为 GBK),导致中文显示为
或方块。
常见错误现象:
写在
前面
前有空行、空格或不可见 Unicode 字符
把
放在
后面甚至
里
实操建议:
打开 HTML 文件,确认
是
内第一个非空白、非注释的子元素
用 VS Code 打开文件,按
→ 输入 “Reveal in Explorer”,右键 → “Open with Code” 确保没被其他程序锁住
删除所有
这类旧式写法,只留一个
文件实际编码必须是 UTF-8 without BOM
声明写了
,但文件本身是 GBK 或 UTF-8 with BOM,浏览器照样会解错字节流——比如把一个中文字符的三字节序列当成三个独立 Latin-1 字符渲染,结果就是乱码。
立即学习
“
前端免费学习笔记(深入)
”;
验证和修正方法:
VS Code 右下角查看当前编码,若显示
或
,点击它 → “Save with Encoding” → 选
(注意不是
)
Notepad++:菜单栏“编码” → “转为 UTF-8 编码”(不是“UTF-8-BOM”)
命令行快速检测 BOM:
,输出含
就说明有 BOM,需清除后重存
HTTP 响应头中的 Content-Type 优先级更高
服务器返回的 HTTP 响应头里如果带了
,或者压根没写
子句,那
就会被无视。这是很多本地测试正常、上线就乱码的根本原因。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
检查步骤:
F12 打开开发者工具 → Network 标签页 → 刷新页面 → 找到主 HTML 请求(Type 为
)
点开它 → Headers → Response Headers → 查看
值
正确值应为
;若为
、
或缺失
,就得改服务器配置
常见服务端修正方式:
Apache:在站点根目录加
,写入
Nginx:在
或
块中加
Express(Node.js):
外部资源(CSS/JS)也要统一编码
就算 HTML 本身没问题,如果引入的
或
文件是 GBK 编码,且没在 HTTP 响应头里声明 charset,它们内部的中文注释或字符串也可能乱码——尤其当这些文件里有中文路径、中文提示或内联样式时。
排查要点:
对每个外部 CSS/JS 文件,同样用 VS Code 检查右下角编码,并保存为
(无 BOM)
确保 Web 服务器对
和
文件也返回带
的
(如
)
避免在 CSS 中写
这类中文时,文件编码和声明不一致
真正容易被忽略的是:HTML、CSS、JS、HTTP 响应头、数据库连接、甚至表单提交的
,这五者只要有一处脱节,乱码就可能出现。别只盯着
单点修复。
meta charsetCtrl+Shift+PUTF-8UTF-8 with BOMGBKUTF-8UTF-8 with BOMhead -c 4 yourfile.html | xxdef bb bfContent-Type: text/html; charset=gbkcharsetdocumentContent-Typetext/html; charset=utf-8charset=gbkcharset=iso-8859-1charset.htaccessAddDefaultCharset UTF-8serverlocationcharset utf-8;res.set('Content-Type', 'text/html; charset=utf-8');UTF-8.css.jscharset=utf-8Content-Typetext/css; charset=utf-8content: "你好";accept-charset