HTML5中设置页面编码的唯一推荐方式是,必须置于最前;需确保文件实际保存为UTF-8(无BOM),且服务器Content-Type响应头不冲突,三者缺一不可。
HTML5 中
设置页面编码的唯一推荐方式是使用 ,且它必须出现在 内尽可能靠前的位置(最好作为第一个子元素)。浏览器在解析到该标签前若已读取了非 ASCII 字符(比如中文注释、标题文字),就可能触发编码误判,导致乱码或重新解析。
常见错误写法包括:
放在 或 后面(虽兼容但冗余,且易因空格/大小写出错)(不符合 HTML5 规范,部分解析器会忽略)声明 charset="UTF-8" 没有用,如果文件本身是用 GBK 或 ANSI(Windows 记事本默认)保存的,浏览器按 UTF-8 解码仍会显示乱码。关键在于“声明”和“物理存储”要对齐。
确认和修正步骤:
UTF-8,选择「文件 → 另存为 → 编码选 UTF-8(无 BOM)」当网页通过 HTTP 服务访问(如 http://localhost:8080/index.html),服务器返回的 Content-Type 响应头(例如 text/html; charset=iso-8859-1)会覆盖 HTML 中的 。本地双击打开(file:/// 协议)则只依赖 。
验证方法:
index.html → 查看 Response Headers 中的 content-type
AddDefaultCharset UTF-8;Nginx 加 charset utf-8;;Python 的 http.server 默认不设 header,此时 生效我的页面 你好,世界!
真正容易被忽略的是:即使写了 ,只要文件保存编码不对、或服务器 header 冲突、或它没放在 开头三行内,乱码就大概率发生——这三个条件缺一不可。