วิธีตรวจสอบว่าไฟล์มี BOM เป็นข้อความ utf-8


18

ฉันจะตรวจสอบว่าไฟล์ข้อความ utf-8 มี BOM จากบรรทัดคำสั่งได้อย่างไร

fileUTF-8 Unicode textคำสั่งแสดงให้เห็นฉัน

แต่ฉันไม่รู้ว่ามันหมายความว่าไม่มี BOM ในไฟล์

Ubuntu 12.04ฉันใช้


โปรดทราบว่าไม่มี BOM ใน UTF-8 นั่นคือคุณสมบัติของ UTF-16 ไฟล์ UTF-8 อาจเริ่มต้นด้วยตัวอักษร U + FEFF แต่ในกรณีนี้จะมีพื้นที่ว่างเป็นศูนย์
Gilles 'หยุดชั่วร้าย'

คำตอบ:


30

fileจะบอกคุณถ้ามี BOM คุณสามารถทดสอบ:

$ /usr/bin/printf "\ufeff...\n" | file -
/dev/stdin: UTF-8 Unicode (with BOM) text

หมายเหตุ: ตามการfileเปลี่ยนแปลงคุณสมบัตินี้มีอยู่แล้วในปี 2550 ดังนั้นสิ่งนี้ควรใช้กับเครื่องปัจจุบัน


1
ขอบคุณสำหรับคำตอบ. ฉันfileรุ่นและผลที่ได้ก็คือfile-5.09 /dev/stdin: ASCII textมันขึ้นอยู่กับรุ่นของfile?
เตารีดและ

@ เท็ตสึฉันทดสอบด้วยfile5.04 (เดเบียนบีบ) และมันก็โอเค แม้ในปี 2007 ตามการเปลี่ยนแปลง (ไม่ได้ทดสอบ) แต่คุณสามารถทำแบบทดสอบที่ฉันให้ในคำตอบของฉัน
vinc17

ฉันเพิ่งติดตั้งlanguage-pack-jaจากaptนั้นตัวอย่างของคุณทำงานได้อย่างสมบูรณ์ ขอบคุณสำหรับความช่วยเหลือของคุณ!
เตารีดและ

4

หากคุณดำเนินการstat fileNameควรให้อักขระสามตัวตรงกับคุณ เมื่อฉันเปิดไฟล์ในเครื่องมือแก้ไขฉันไม่เห็นอะไรเลย ดังนั้นการสังเกตว่าขนาดไฟล์ 3 ทำให้ฉันมีความชัดเจนว่ามันมี BOM

นอกจากนี้โพสต์ที่นี่มีประโยชน์ในกรณีของฉัน

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.