ไม่ไม่สามารถทำได้จากใน HTML ส่วนหัวการตอบสนองของเซิร์ฟเวอร์มีความสำคัญเหนือเมตาแท็กของเอกสาร ตามที่ระบุไว้ใน5.2.2 การระบุการเข้ารหัสอักขระ - ข้อมูลจำเพาะ HTML 4.01 :
ในการสรุปผลการทำตามตัวแทนผู้ใช้จะต้องปฏิบัติตามลำดับความสำคัญต่อไปนี้เมื่อพิจารณาการเข้ารหัสอักขระของเอกสาร (จากลำดับความสำคัญสูงสุดไปต่ำสุด):
- พารามิเตอร์ HTTP "charset" ในฟิลด์ "Content-Type"
- การประกาศ META ที่ตั้งค่า "http-equiv" เป็น "Content-Type" และชุดค่าสำหรับ "charset"
- แอตทริบิวต์ charset ตั้งอยู่บนองค์ประกอบที่กำหนดทรัพยากรภายนอก
ดังนั้นสิ่งนี้ต้องการการกำหนดค่าบนฝั่งเซิร์ฟเวอร์ อย่างไรก็ตามในขณะที่บทต่อ:
ตัวแทนผู้ใช้อาจมีกลไกที่อนุญาตให้ผู้ใช้แทนที่ข้อมูล "ชุดอักขระ" ที่ไม่ถูกต้อง อย่างไรก็ตามหากตัวแทนผู้ใช้มีกลไกดังกล่าวก็ควรให้มันสำหรับการเรียกดูและไม่สำหรับการแก้ไขเพื่อหลีกเลี่ยงการสร้างหน้าเว็บที่ทำเครื่องหมายด้วยพารามิเตอร์ "charset" ที่ไม่ถูกต้อง
ในกรณีของฉันเซิร์ฟเวอร์ของชนิดเนื้อหาส่วนหัวมีสิทธิชนิด mimeแต่ผิดcharset
เมื่อมันปรากฏขึ้นการกำหนดค่า Apache httpd ของฉันได้ตั้งค่าการAddDefaultCharset
เปิดซึ่งเพิ่ม; charset=ISO-8859-1
ส่วน วางลงในไดเรกทอรีเว็บไซต์ราก.htaccess
บรรทัดต่อไปนี้:
AddDefaultCharset Off
ข้อมูลชุดอักขระถูกลบออก:
$ curl -I http://example.com/file.html
HTTP/1.1 200 OK
Date: Fri, 19 Oct 2012 15:07:52 GMT
...
Content-Type: text/html
(ดูบรรทัดสุดท้ายไม่มี; charset=...
ส่วน) เมื่อใช้ร่วมกับเมตาแท็ก html ทริกเกอร์ฮิวริสติกของเบราว์เซอร์ที่กล่าวมาจะใช้แทนชุดอักขระจากเมตาแท็ก เว็บไซต์ถอดรหัสอย่างถูกต้อง
ทดสอบกับ:
- Google Chrome เวอร์ชัน 22.0.1229.94
- Firefox เวอร์ชัน 16.0.1
- รุ่น Lynx 2.8.7rel.1 (5 ก.ค. 2552)
เบราว์เซอร์ทั้งสามนี้มีปัญหากับการกำหนดค่าดั้งเดิมและทำงานในขณะนี้ (ทั้งหมดใน Fedora 17)
- Opera 12.02
- Internet Explorer 6 (Win XP SP3)
ไม่มีปัญหาในตอนแรก ทั้งคู่เลือกที่จะใช้UTF-8จากเมตาแท็กเหนือการตั้งค่าISO-8859-1จากเซิร์ฟเวอร์
ไม่รองรับ UTF-8 ดังนั้นให้เลือกWestern (Latin1) เสมอไม่ว่าการตั้งค่าเซิร์ฟเวอร์และเมตาแท็กจะเป็นอย่างไร