必须置于内且为首个编码声明标签,值严格小写、双引号、无空格;文件保存编码、HTTP响应头与之三者须完全一致,否则仍会乱码。
meta charset 放错位置会导致乱码
浏览器解析 HTML 时,如果
出现在
之后,或被 JavaScript、CSS 阻塞,就可能错过早期字节流的
编码
声明,直接按默认编码(如 ISO-8859-1)解码,导致中文变问号或方块。这不是“没写”,而是“写晚了”。
必须放在
内,且是
中**第一个**有实际编码作用的标签(最好在
前)
不能放在
里,也不能用 JS 动态插入——此时解析早已开始
如果用了 HTTP 头
,
仍需保留,因为部分离线场景或本地文件(
)不走 HTTP 头
charset 值只能写 utf-8,别用 UTF-8 或 utf8
HTML 标准明确要求
属性值**大小写敏感且只认
**。写成
、
、
或
,浏览器虽多数能容错识别,但属于非标准写法,W3C 验证会报错,某些老旧工具链(如某些构建插件或代理网关)可能直接忽略。
正确写法只有:
不要加空格、引号类型混用(单引号在某些模板引擎里可能出问题,统一用双引号)
不用写
或
——这些不是 charset 值,是文件保存选项
HTML 文件本身编码必须和 meta charset 一致
写了
却用 GBK 编码保存 HTML 文件,浏览器会按 utf-8 解码一堆乱码字节,结果还是乱码。这是最常被忽略的“两层不匹配”问题。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
编辑器保存文件时,务必选
(不含 BOM 更稳妥,尤其对 PHP/Node.js 后端输出)
VS Code 默认是 UTF-8,但右下角编码显示可能被误点成 GBK;Sublime Text 新建文件默认不是 UTF-8,需手动设
用命令行检查:Linux/macOS 下运行
,看输出中的
是否为
服务端响应头优先级高于 meta charset
当服务器返回 HTTP 响应头
,哪怕 HTML 里写了
,浏览器也以响应头为准。这时候改前端没用,得调后端或 Web 服务器配置。
立即学习
“
前端免费学习笔记(深入)
”;
Apache:在
或虚拟主机配置中加
Nginx:在
或
块中加
Node.js(Express):
PHP:在输出 HTML 前调用
实际乱码往往卡在“文件存的是 utf-8,但服务器发成了 gbk”,或者“meta 写对了,可它躲在 script 标签后面”。查的时候先看网络面板的 Response Headers,再看页面源码里 meta 的位置和拼写,最后用 file 命令确认文件真实编码。
Content-Type: text/html; charset=utf-8file://charsetutf-8UTF-8utf8UTF8unicodeutf-8bomutf-8-no-bomUTF-8file -i your-page.htmlcharset=utf-8Content-Type: text/html; charset=gbk.htaccessAddDefaultCharset utf-8serverlocationcharset utf-8;res.set('Content-Type', 'text/html; charset=utf-8')header('Content-Type: text/html; charset=utf-8');