ไม่มีการประกาศชุดอักขระหรือประกาศช้าเกินไปใน HTML

เซิร์ฟเวอร์และเบราว์เซอร์สื่อสารกันด้วยการส่งข้อมูลแบบไบต์ผ่าน อินเทอร์เน็ต ถ้าเซิร์ฟเวอร์ไม่ระบุรูปแบบการเข้ารหัสอักขระไว้ เมื่อใช้เมื่อส่งไฟล์ 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

แหล่งข้อมูล