Як перевірити, чи файл містить BOM у тексті utf-8


18

Як я можу перевірити, чи є у текстовому файлі utf-8 BOM з командного рядка?

fileкоманда показує мені UTF-8 Unicode text.

Але я не знаю, це означає, що у файлі немає BOM.

Я використовую Ubuntu 12.04.


Зауважте, що в UTF-8 немає BOM: це особливість UTF-16. Файл UTF-8 може починатися з символу U + FEFF, але в цьому випадку це простір нульової ширини.
Жил 'ТАК - перестань бути злим'

Відповіді:


30

fileпідкаже, чи є БОМ. Ви можете протестувати:

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

Примітка. Відповідно до fileжурналу змін, ця функція існувала вже в 2007 році. Отже, це має працювати на будь-якій сучасній машині.


1
Дякую за відповідь Моя fileверсія є, file-5.09і результат був /dev/stdin: ASCII text. Це залежить від версії file?
ironsand

@Tetsu я перевірив file5.04 (Debian вичавлювання), і це було нормально. Навіть у 2007 році відповідно до журналу змін (не перевірено). Але ви можете зробити тест, який я дав у своїй відповіді.
vinc17

Я тільки що встановив language-pack-jaз apt, то ваш приклад працює відмінно. Спасибі за вашу допомогу!
ironsand

4

Якщо ви будете виконувати stat fileNameйого, вам слід дати точні три символи. Коли я відкрив файл у редакторі, я не зміг нічого побачити. Тож помічаючи, що розмір файлу був 3, дав мені зрозумілість, що він має BOM.

Також публікація тут була корисною в моєму випадку.

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.