Как проверить, имеет ли файл спецификацию в тексте utf-8

18

Как я могу проверить, есть ли в текстовом файле utf-8 спецификация из командной строки?

fileКоманда показывает мне UTF-8 Unicode text.

Но я не знаю, это означает, что в файле нет спецификации.

Я использую Ubuntu 12.04.

Ironsand
источник
Обратите внимание, что в UTF-8 нет спецификации: это особенность UTF-16. Файл UTF-8 может начинаться с символа U + FEFF, но в этом случае это пробел нулевой ширины.
Жиль "ТАК - перестань быть злым"

Ответы:

30

fileскажет вам, если есть спецификация Вы можете проверить:

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

Примечание: согласно fileжурналу изменений, эта функция существовала уже в 2007 году. Таким образом, она должна работать на любом текущем компьютере.

vinc17
источник
1
Спасибо за ответ. Моя fileверсия есть file-5.09и результат был /dev/stdin: ASCII text. Это зависит от версии file?
утюг
@Tetsu Я тестировал с file5.04 (Debian squeeze), и все было в порядке. Даже в 2007 году, согласно журналу изменений (не проверено). Но вы можете сделать тест, который я дал в своем ответе.
vinc17
Я только что установил language-pack-jaс apt, тогда ваш пример работает отлично. Спасибо за вашу помощь!
утюжок
4

Если вы выполните stat fileNameего, вы должны точно указать три символа. Когда я открыл файл в редакторе, я ничего не увидел. То, что размер файла был равен 3, позволило мне понять, что у него есть спецификация.

Кроме того, пост здесь был полезен в моем случае.

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
akshita007
источник