Как найти кодирование файла с помощью сценария на Linux?

Я должен найти кодирование всех файлов, которые помещаются в каталог. Существует ли способ найти кодирование используемым?

file команда не может сделать это.

Кодирование, которое представляет интерес для меня is:ISO-8859-1. Если кодирование - что-либо еще, я хочу переместить файл в другой каталог.

280
задан jww 14 October 2019 в 14:56
поделиться

3 ответа

Похоже, вы ищете enca . Он может угадывать и даже конвертировать между кодировками. Просто посмотрите на страницу руководства .

Или, если это не удалось, используйте файл -i (linux) или -I (osx). Это выведет информацию MIME-типа для файла, которая также будет включать кодировку набора символов. Я нашел для него man-страницу :)

384
ответ дан 23 November 2019 в 02:00
поделиться

Это не то, что вы можете сделать безошибочно. Одной из возможностей может быть проверка каждого символа в файле, чтобы убедиться, что он не содержит символов в диапазонах 0x00 - 0x1f или 0x7f -0x9f , но, как я уже сказал, это может быть истинным для любого количества файлов, включая, по крайней мере, еще один вариант ISO8859.

Другая возможность - найти определенные слова в файле на всех поддерживаемых языках и посмотреть, сможете ли вы их найти.

Так Например, найдите эквивалент английских слов "and", "but", "to", "of" и т. д. на всех поддерживаемых языках 8859-1 и посмотрите, есть ли у них большое количество вхождений в файле

Я не говорю о буквальном переводе, таком как:

English   French
-------   ------
of        de, du
and       et
the       le, la, les

, хотя это возможно. Я'

2
ответ дан 23 November 2019 в 02:00
поделиться

Действительно трудно определить, является ли это iso-8859-1. Если у вас есть текст только с 7-битными символами, который также может быть iso-8859-1, но вы не знаете. Если у вас есть 8-битные символы, то верхние символы региона также существуют в кодировках заказа. Поэтому вам придется использовать словарь, чтобы лучше угадать, какое это слово и определить, от какой буквы оно должно быть. Наконец, если вы обнаружите, что это может быть utf-8, вы уверены, что это не iso-8859-1

Кодирование - это одна из самых сложных вещей, потому что вы никогда не знаете, ничего не говорит вам

5
ответ дан 23 November 2019 в 02:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: