เซิร์ฟเวอร์และเบราว์เซอร์สื่อสารกันด้วยการส่งข้อมูลแบบไบต์ผ่าน อินเทอร์เน็ต ถ้าเซิร์ฟเวอร์ไม่ระบุรูปแบบการเข้ารหัสอักขระไว้ เมื่อใช้เมื่อส่งไฟล์ HTML เบราว์เซอร์จะไม่ทราบว่าไบต์แต่ละไบต์แทนอักขระอะไร การประกาศการเข้ารหัสอักขระ สามารถแก้ปัญหานี้ได้
วิธีที่การตรวจสอบ charset
ของ Lighthouse ล้มเหลว
Lighthouse ทำเครื่องหมายหน้าเว็บที่ไม่ได้ระบุการเข้ารหัสอักขระ:
Lighthouse จะถือว่ามีการประกาศการเข้ารหัสอักขระหากพบสิ่งต่อไปนี้
- องค์ประกอบ
<meta charset>
ใน<head>
ของเอกสารที่สมบูรณ์ ที่มีอยู่ใน 1024 ไบต์แรกของเอกสาร - ส่วนหัวการตอบกลับ HTTP ของ
Content-Type
ที่มีคำสั่งcharset
ที่ตรงกับ ชื่อ IANA ที่ถูกต้อง - Byte-order Mark (BOM)
วิธีผ่านการตรวจสอบ charset
เพิ่มองค์ประกอบ <meta charset>
ลงใน HTML
เพิ่มองค์ประกอบ <meta charset>
ภายใน 1024 ไบต์แรกของเอกสาร HTML
องค์ประกอบต้องอยู่ภายใน 1,024 ไบต์แรก
แนวทางปฏิบัติแนะนำคือทำให้องค์ประกอบ <meta charset>
เป็นองค์ประกอบแรกในองค์ประกอบ
<head>
ของเอกสาร
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
…
เพิ่มส่วนหัวการตอบกลับ HTTP Content-Type
กำหนดค่าเซิร์ฟเวอร์เพื่อเพิ่ม Content-Type
ส่วนหัวการตอบกลับ HTTP ที่มีคำสั่ง charset
Content-Type: text/html; charset=UTF-8