Я должен найти кодирование всех файлов, которые помещаются в каталог. Существует ли способ найти кодирование используемым?
file
команда не может сделать это.
Кодирование, которое представляет интерес для меня is:ISO-8859-1. Если кодирование - что-либо еще, я хочу переместить файл в другой каталог.
Похоже, вы ищете enca
. Он может угадывать и даже конвертировать между кодировками. Просто посмотрите на страницу руководства .
Или, если это не удалось, используйте файл -i
(linux) или -I
(osx). Это выведет информацию MIME-типа для файла, которая также будет включать кодировку набора символов. Я нашел для него man-страницу :)
Это не то, что вы можете сделать безошибочно. Одной из возможностей может быть проверка каждого символа в файле, чтобы убедиться, что он не содержит символов в диапазонах 0x00 - 0x1f
или 0x7f -0x9f
, но, как я уже сказал, это может быть истинным для любого количества файлов, включая, по крайней мере, еще один вариант ISO8859.
Другая возможность - найти определенные слова в файле на всех поддерживаемых языках и посмотреть, сможете ли вы их найти.
Так Например, найдите эквивалент английских слов "and", "but", "to", "of" и т. д. на всех поддерживаемых языках 8859-1 и посмотрите, есть ли у них большое количество вхождений в файле
Я не говорю о буквальном переводе, таком как:
English French
------- ------
of de, du
and et
the le, la, les
, хотя это возможно. Я'
Действительно трудно определить, является ли это iso-8859-1. Если у вас есть текст только с 7-битными символами, который также может быть iso-8859-1, но вы не знаете. Если у вас есть 8-битные символы, то верхние символы региона также существуют в кодировках заказа. Поэтому вам придется использовать словарь, чтобы лучше угадать, какое это слово и определить, от какой буквы оно должно быть. Наконец, если вы обнаружите, что это может быть utf-8, вы уверены, что это не iso-8859-1
Кодирование - это одна из самых сложных вещей, потому что вы никогда не знаете, ничего не говорит вам