ปัญหาที่ไม่เคยได้รับการแก้ไขในระหว่างการพัฒนาคือเพจใช้การเข้ารหัส UTF8 และส่วนหัวและส่วนท้ายใช้วิธีการรวมไฟล์เทมเพลต ส่งผลให้มีบรรทัดว่างเพิ่มเติมประมาณ 10px ในส่วนหัวและส่วนท้ายโดยไม่มีสิ่งใดเลย เหตุผลและไม่มีอะไรเลย
เหตุผลก็คือพวกมันทั้งหมดถูกเข้ารหัสใน utf8 เมื่อรวมไฟล์ สตรีมไบนารี่สุดท้ายจะมีแท็ก UTF8 BOM หลายแท็ก IE ไม่สามารถแยกวิเคราะห์เพจที่มีแท็ก UTF8 BOM หลายแท็กได้ตามปกติ และจะแทนที่โดยตรงด้วยแคร่แคร่ที่แสดงจริง ซึ่งส่งผลให้ บรรทัดว่าง แต่ Firefox ไม่มีปัญหานี้
ดังนั้น หากเทมเพลตใช้วิธีการรวมเพื่อให้มีไฟล์ utf8 หลายไฟล์ และจำเป็นต้องบันทึกด้วย ultraedit เพียงเลือก utf8 ที่ไม่มีรูปแบบ BOM เมื่อบันทึกเป็นฟังก์ชัน
นอกจากนี้ หากเพจภาษาจีนวางแท็ก title ไว้หน้า <meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ /> ในแท็ก head html หน้านั้นจะเป็นเช่นนั้น ว่างเปล่า.
ดังนั้นหน้า utf8 ควรใช้ลำดับมาตรฐาน
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />
<meta http-equiv=”เนื้อหาภาษา” content=”zh-CN” />
<meta name=”robots” content=”index,follow” />
<meta name=”คำหลัก” content=”” />
<meta name=”คำอธิบาย” เนื้อหา=”” />
<meta name=”rating” content=”general” />
<meta name=”author” content=”” />
<meta name=”ลิขสิทธิ์” content=”” />
<meta name=”เครื่องกำเนิดไฟฟ้า” content=”” />
<title></title>
ส่วนหัว BOM: xEFxBBxBF PHP4 และ 5 ยังคงละเว้น BOM ดังนั้นจึงส่งออกโดยตรงก่อนที่จะแยกวิเคราะห์
มีคำอธิบายพิเศษของปัญหานี้ในคำถามที่พบบ่อยมาตรฐาน w3.org:
http://www.w3.org/International/questions/qa-utf8-bom
รายละเอียดมีดังนี้:
ในการเข้ารหัส UCS จะมีรหัส เรียกว่าอักขระ "ZERO WIDTH NO" -BREAK SPACE" การเข้ารหัสของมันคือ FEFF FFFE เป็นอักขระที่ไม่มีอยู่ใน UCS ดังนั้นจึงไม่ควรปรากฏในการส่งสัญญาณจริง ข้อกำหนด UCS แนะนำให้เราส่งอักขระ "ZERO WIDTH NO-BREAK SPACE" ก่อนที่จะส่งสตรีมไบต์ ด้วยวิธีนี้ หากผู้รับได้รับ FEFF ก็แสดงว่าสตรีมไบต์นั้นเป็น Big-Endian หากได้รับ FFFE ก็แสดงว่าสตรีมไบต์นั้นเป็น Little-Endian ดังนั้นอักขระ "ZERO WIDTH NO-BREAK SPACE" จึงถูกเรียกว่า BOM
UTF-8 ไม่จำเป็นต้องมี BOM เพื่อระบุลำดับไบต์ แต่สามารถใช้ BOM เพื่อระบุวิธีการเข้ารหัสได้ การเข้ารหัส UTF-8 ของอักขระ "ZERO WIDTH NO-BREAK SPACE" คือ EF BB BF ดังนั้นหากผู้รับได้รับสตรีมไบต์ที่เริ่มต้นด้วย EF BB BF ก็จะรู้ว่ามีการเข้ารหัส UTF-8
Windows เป็นระบบปฏิบัติการที่ใช้ BOM เพื่อทำเครื่องหมายวิธีการเข้ารหัสไฟล์ข้อความ: WindowsXP Professional ชุดอักขระเริ่มต้น: จีน
1) แผ่นจดบันทึก: สามารถระบุไฟล์รูปแบบการเข้ารหัส UTF-8 ได้โดยอัตโนมัติโดยไม่มี BOM แต่ไม่สามารถควบคุมได้เมื่อบันทึกไฟล์ เพิ่ม BOM หากไฟล์ถูกบันทึก BOM จะถูกเพิ่มอย่างสม่ำเสมอ
2)
editplus: ไม่สามารถจดจำไฟล์รูปแบบการเข้ารหัส UTF-8 ได้โดยอัตโนมัติหากไม่มี BOM เมื่อบันทึกไฟล์ ให้เลือกรูปแบบ UTF-8 และจะไม่เขียนส่วนหัว BOM ในส่วนหัวของไฟล์
ระบุไฟล์ UTF-8 โดยอัตโนมัติด้วย BOM และไม่มี BOM (สามารถกำหนดค่าได้) เมื่อบันทึก คุณสามารถเลือกได้ว่าจะเพิ่ม BOM ผ่านการกำหนดค่าหรือไม่
(หมายเหตุพิเศษคือเมื่อบันทึกไฟล์ที่สร้างขึ้นใหม่ คุณจะต้องเลือกบันทึกเป็น UTF -8 ไม่มีรูปแบบ bom)
ต่อมาฉันพบว่า Notepad ++ มีการรองรับ utf-8 bom ที่ดีกว่าด้วย และฉันแนะนำให้ทุกคนใช้มัน