字符集声明在 HTML 中缺失或出现过晚

服务器和浏览器通过互联网发送字节数据来相互通信。如果服务器在发送 HTML 文件时未指定所用的字符编码格式,浏览器将不知道每个字节代表什么字符。字符编码声明规范解决了此问题。

Lighthouse charset 审核失败的原因

Lighthouse 会标记未指定字符编码的网页:

失败的字符编码审核。

如果 Lighthouse 发现以下任一情况,则认为已声明字符编码:

  • 文档的 <head> 中完全包含在文档的前 1024 个字节中的 <meta charset> 元素
  • 包含 charset 指令的 Content-Type HTTP 响应标头,该指令与有效的 IANA 名称相匹配
  • 字节顺序标记 (BOM)

如何通过 charset 审核

向 HTML 添加 <meta charset> 元素

在 HTML 文档的前 1024 个字节内添加 <meta charset> 元素。 该元素必须完全包含在前 1024 个字节内。最佳实践是将 <meta charset> 元素设为文档 <head> 中的第一个元素。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    …

添加 Content-Type HTTP 响应标头

将服务器配置为添加包含 charset 指令的 Content-Type HTTP 响应标头。

Content-Type: text/html; charset=UTF-8

资源