เข้าใจอักขระแปลกๆ ใน PHP: อธิบายเกี่ยวกับ Byte Order Mark
คุณเคยเจออักขระแปลกๆ ในผลลัพธ์ของ PHP ที่ทำให้คุณสงสัยหรือไม่? คุณไม่ได้อยู่คนเดียว นักพัฒนาหลายคนประสบปัญหานี้ซึ่งมักนำไปสู่ความสับสนและความหงุดหงิด
ปัญหาที่เกิดขึ้น
ในคำถามล่าสุด นักพัฒนาคนหนึ่งแชร์ประสบการณ์เกี่ยวกับไฟล์ PHP ที่แสดงอักขระที่ผิดปกติเมื่อถูกเรียกใช้งาน สถานการณ์เป็นดังนี้:
- นักพัฒนามีไฟล์ PHP ที่ดูเหมือนจะออกอักขระแปลกๆ เช่น
Hello
แทนที่จะเป็นHello
ที่คาดหวัง - หลังจากกระบวนการตัดสินใจพวกเขาพบว่าปัญหายังคงมีอยู่แม้จะมีการย่อรหัสให้เรียบง่ายที่สุด:
<?php print 'Hello'; ?>
- อย่างไรก็ตาม เมื่อสร้างไฟล์ใหม่และคัดลอกโค้ดเดียวกันลงไป ผลลัพธ์กลับสะอาดตา
สถานการณ์นี้ทำให้เกิดคำถามสำคัญ: อะไรคือสาเหตุที่ทำให้อักขระเหล่านี้ปรากฏขึ้น?
วิธีแก้ไข: สาเหตุคือ Byte Order Mark
อักขระแปลกๆ ที่คุณเห็นในผลลัพธ์ PHP ของคุณเรียกว่า Byte Order Mark
(BOM) BOM เป็นอักขระเฉพาะที่ใช้เพื่อระบุการเรียงลำดับของไบต์ในไฟล์ข้อความ และสามารถสร้างความสับสนเมื่อทำงานกับรูปแบบการเข้ารหัสต่างๆ
ทำความเข้าใจกับ BOM
-
BOM คืออะไร?
BOM คือสัญลักษณ์เพิ่มเติมที่เริ่มต้นสตรีมข้อความซึ่งแจ้งให้ผู้อ่านทราบเกี่ยวกับการเรียงลำดับไบต์ที่ใช้สำหรับการเข้ารหัส แม้ว่าจะมีประโยชน์สำหรับแอปพลิเคชันที่อิงตามการเรียงลำดับของไบต์ แต่ก็สามารถทำให้เกิดผลลัพธ์ที่ไม่คาดคิดในไฟล์ PHP หากไม่จัดการอย่างถูกต้อง -
BOM มีผลกระทบต่อไฟล์ PHP อย่างไร?
เมื่อไฟล์ PHP เริ่มต้นด้วย BOM PHP จะตีความว่าเป็นส่วนหนึ่งของการแสดงผล ดังนั้น แทนที่จะพิมพ์แค่Hello
ก็จะพิมพ์Hello
ซึ่งเป็นการแสดงผลของลำดับ BOM
วิธีแก้ไขปัญหา
ตอนนี้เราได้ทราบถึงสาเหตุแล้ว นี่คือวิธีแก้ไขปัญหา:
-
เปิดโปรแกรมแก้ไขข้อความของคุณ:
เปิดไฟล์ PHP ที่มีปัญหาในโปรแกรมแก้ไขข้อความที่อนุญาตให้คุณจัดการกับการตั้งค่าการเข้ารหัส (เช่น Notepad++, VSCode) -
ตรวจสอบตัวเลือกการเข้ารหัส:
มองหาตัวเลือกในการเปลี่ยนการเข้ารหัสไฟล์ คุณจำเป็นต้องบันทึกไฟล์โดยไม่มี BOM โดยทั่วไปควรบันทึกเป็น:- UTF-8 (ไม่มี BOM)
- ANSI (ถ้าคุณไม่ได้ใช้ตัวอักษรพิเศษใดๆ)
-
บันทึกการเปลี่ยนแปลง:
หลังจากเลือกตัวเลือกที่เหมาะสมแล้ว ให้บันทึกไฟล์และเรียกใช้สคริปต์ PHP ของคุณอีกครั้ง อักขระแปลกๆ จะต้องหายไปแล้ว!
บทสรุป
โดยการเข้าใจ Byte Order Mark
และผลกระทบของมันต่อไฟล์ PHP คุณสามารถหาวิธีแก้ปัญหาและแก้ไขปัญหาที่เกี่ยวข้องกับอักขระแปลกๆ ในสคริปต์ของคุณได้เสมอ อย่าลืมตรวจสอบการตั้งค่าการเข้ารหัสเมื่อทำงานกับไฟล์ต่างๆ หรือการถ่ายโค้ด โดยเฉพาะเมื่อมาถึงการพัฒนา PHP
ถ้าคุณเผชิญกับปัญหานี้อีก อย่าตกใจ—แค่จัดการกับการเข้ารหัสไฟล์ของคุณ และคุณจะกลับมาอยู่ในเส้นทางที่ถูกต้องในเวลาไม่นาน!