Thiếu nội dung khai báo bộ ký tự hoặc khai báo quá muộn trong HTML

Máy chủ và trình duyệt giao tiếp với nhau bằng cách gửi các byte dữ liệu qua Internet. Nếu máy chủ không chỉ định định dạng mã hoá ký tự mà máy chủ đang sử dụng khi gửi tệp HTML, thì trình duyệt sẽ không biết mỗi byte đại diện cho ký tự nào. Thông số kỹ thuật về khai báo mã hoá ký tự giải quyết vấn đề này.

Cách kiểm tra charset của Lighthouse không thành công

Lighthouse gắn cờ các trang không chỉ định mã hoá ký tự:

Quy trình kiểm tra bộ mã hoá ký tự không thành công.

Lighthouse coi mã hoá ký tự là đã được khai báo nếu tìm thấy bất kỳ thông tin nào sau đây:

  • Phần tử <meta charset> trong <head> của tài liệu được chứa hoàn toàn trong 1024 byte đầu tiên của tài liệu
  • Tiêu đề phản hồi HTTP Content-Type có chỉ thị charset khớp với tên IANA hợp lệ
  • Dấu thứ tự byte (BOM)

Cách vượt qua bài kiểm tra charset

Thêm phần tử <meta charset> vào HTML

Thêm phần tử <meta charset> trong 1024 byte đầu tiên của tài liệu HTML. Phần tử này phải được chứa hoàn toàn trong 1024 byte đầu tiên. Phương pháp hay nhất là đặt phần tử <meta charset> làm phần tử đầu tiên trong <head> của tài liệu.

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

Thêm tiêu đề phản hồi HTTP Content-Type

Định cấu hình máy chủ để thêm tiêu đề phản hồi Content-Type HTTP có chứa chỉ thị charset.

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

Tài nguyên