แม้ว่าหนึ่งสามารถเลือกการเข้ารหัสด้วยตนเอง (และอย่าลืมที่จะปิดการใช้งานเมื่อเยี่ยมชมเว็บไซต์อื่น) จริง ๆ แล้วเว็บไซต์ควรมีการระบุไว้อย่างถูกต้อง เซิร์ฟเวอร์หรือเว็บเพจควรระบุบางสิ่งบางอย่างไม่เช่นนั้นเบราว์เซอร์ทั้งหมดจะสามารถคาดเดาได้ดีที่สุด และแน่นอนถ้าการเข้ารหัสที่ถูกระบุไว้แล้วเอกสาร HTML ในความเป็นจริงควรใช้การเข้ารหัสที่ ไม่มากสำหรับเว็บไซต์จากคำถามดังที่แสดงด้านล่าง:
เพื่อดูว่าสิ่งที่เว็บเซิร์ฟเวอร์ที่ระบุหนึ่งต้องไปดูที่ที่เรียกว่าหัว การใช้บริการออนไลน์จากweb-sniffer.netเพื่อเปิดเผยส่วนหัวที่คุณจะได้รับ:
HTTP / 1.1 200 ตกลง
วันที่: จันทร์, 17 สิงหาคม 2009 17:47:03 GMT
เซิร์ฟเวอร์: Apache
ปรับเปลี่ยนครั้งล่าสุด: จันทร์, 27 พฤศจิกายน 2549 23:38:49 GMT
ETag: "758b0606-1a316-4234309151440"
ยอมรับช่วง: ไบต์
ความยาวเนื้อหา: 107286
การเชื่อมต่อ: ปิด
ประเภทเนื้อหา: ข้อความ / html; charset = utf-8 (BOM UTF-16, litte-endian)
บรรทัดสุดท้ายนั้นค่อนข้างแปลก: เซิร์ฟเวอร์จะอ้างสิทธิ์บางอย่างว่าเป็นทั้ง UTF-8 และ UTF-16 ได้อย่างไร ค่าสำหรับcharset
ควรเป็นหนึ่งในค่าที่ลงทะเบียนกับ IANA (เช่นเช่น UTF-8 โดยไม่มีความคิดเห็นใด ๆ ) อย่างไรก็ตามการใช้ดมกลิ่นแพ็คเก็ตWiresharkมากกว่าบริการออนไลน์พบว่าข้อความ(BOM UTF-16, litte-endian)ในความเป็นจริงความคิดเห็นจากบริการออนไลน์ไม่ได้ส่งโดยเว็บเซิร์ฟเวอร์
ดังนั้น: เว็บเซิร์ฟเวอร์อ้างว่ากำลังจะส่งเอกสาร HTML ที่เข้ารหัส UTF-8 ให้เรา
อย่างไรก็ตามเอกสาร HTML ที่ตามมานั้นไม่ถูกต้อง (แก้ไขเพื่อให้สามารถอ่านได้):
ÿþ <! DOCTYPE html PUBLIC "- // W3C // DTD HTML 4.01 Transitional // EN">
<html>
<head>
<title> บทที่ 5 </title>
<meta http-equiv = "ประเภทเนื้อหา" content = "text / html; charset = utf-8">
<link href = "main.css" rel = "stylesheet" type = "text / css">
</ head>
...
ข้างต้นบรรทัดระบุชนิดเนื้อหาที่ควรจะเป็นคนแรกที่ปรากฏในสำหรับเบราว์เซอร์มิฉะนั้นจะไม่ทราบวิธีการจัดการตัวอักษรพิเศษใน<head>
<title>
ที่สำคัญกว่านั้นคือตัวอักขระแปลก ๆ สองตัวแรกÿþ
คือรหัสฐานสิบหก FF และ FE ซึ่งเหมือนกับบริการออนไลน์ที่ระบุไว้แล้วคือเครื่องหมายคำสั่งไบต์สำหรับ UTF-16, litte-endian
ดังนั้น: เว็บเซิร์ฟเวอร์สัญญาว่าจะส่ง UTF-8 แต่จากนั้นจะส่งเครื่องหมายที่ระบุ UTF-16 LE ถัดไปในเอกสาร HTML มันอ้างว่าใช้ UTF-8 อีกครั้ง
อันที่จริง Wireshark แสดงให้เห็นว่าเอกสาร HTML ที่แท้จริงคือการเข้ารหัส UTF-16 นี่ก็หมายความว่าตัวละครทุกตัวจะถูกส่งโดยใช้อย่างน้อยสองไบต์ (octets) เช่นเดียวกับตัวละครใน 6 จะถูกส่งเป็นไบต์เลขฐานสิบหก<html>
12 3C 00 68 00 74 00 6D 00 6C 00 3E 00
แต่นี้เว็บไซต์มากได้เป็นอย่างดีได้รับ ASCII ธรรมดาที่มันไม่ได้ดูเหมือนจะใช้อักขระที่ไม่ใช่ ASCII ใด ๆ เลย แหล่งที่มาของ HTML นั้นเต็มไปด้วยการอ้างอิงอักขระตัวเลข ( NCRs ) เช่น:
यह दिल्ली
शहर है।
เบราว์เซอร์ที่แสดงข้างต้นเป็นयहदिल्लीशहरहै। อย่างไรก็ตามเนื่องจากการใช้ NCR และ UTF-16 อักขระตัวเดียว (( Unicode U + 092F ) ต้องการมากถึง 14 ไบต์26 00 23 00 32 00 33 00 35 00 31 00 3B 00
เนื่องจากเขียนโดยใช้ NCR य
ในขณะที่อักขระ ASCII 7 ตัวของ NCR นั้นถูกเข้ารหัสโดยใช้ UTF-16 . เมื่อไม่ได้ใช้ NCR ใน UTF-8 ซิงเกิ้ลयนี้ต้องการ 3 ไบต์ ( E0 A4 AF
) และใน UTF-16 สองไบต์ ( 09 2F
)
สำหรับแหล่ง HTML นี้โดยใช้ UTF-16 เป็นการสิ้นเปลืองแบนด์วิธรวมและเซิร์ฟเวอร์ไม่ได้ใช้การบีบอัดใด ๆ