Cara memeriksa apakah file memiliki BOM dalam utf-8 teks


18

Bagaimana saya bisa mengecek apakah file teks utf-8 memiliki BOM dari command line?

fileperintah menunjukkan kepada saya UTF-8 Unicode text.

Tapi saya tidak tahu itu berarti tidak ada BOM dalam file tersebut.

Saya menggunakan Ubuntu 12.04.


Perhatikan bahwa tidak ada BOM di UTF-8: itu adalah fitur UTF-16. File UTF-8 dapat dimulai dengan karakter U + FEFF, tetapi dalam kasus itu adalah ruang dengan lebar nol.
— Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:


30

fileakan memberi tahu Anda jika ada BOM. Anda dapat menguji:

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

Catatan: menurut filechangelog, fitur ini sudah ada pada 2007. Jadi, ini harus bekerja pada mesin apa pun saat ini.


1
Terima kasih atas jawabannya. fileVersi saya adalah file-5.09dan hasilnya /dev/stdin: ASCII text. Apakah ini tergantung pada versi file?
— ironsand

@Tetsu saya diuji dengan file5.04 (memeras Debian) dan itu OK. Bahkan pada 2007, menurut changelog (tidak diuji). Tetapi Anda dapat melakukan tes yang saya berikan dalam jawaban saya.
— vinc17

Saya baru saja menginstal language-pack-jadari apt, maka contoh Anda berfungsi dengan baik. Terima kasih atas bantuan Anda!
— ironsand

4

Jika Anda menjalankannya stat fileNameharus memberi Anda tepat tiga karakter. Ketika saya membuka file di editor, saya tidak dapat melihat apa pun. Jadi memperhatikan bahwa ukuran file adalah 3 memberi saya kejelasan bahwa ia memiliki BOM.

Juga, posting di sini sangat membantu dalam kasus saya.

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.