В текстовом файле нет заголовка, который сохраняет кодировку или около того. Вы можете попробовать команду linux / unix find
, которая пытается угадать кодировку:
file -i unreadablefile.txt
или в некоторых системах
file -I unreadablefile.txt
Но это часто дает вам text/plain; charset=iso-8859-1
, хотя файл не читается (загадочные символы).
Это то, что я сделал, чтобы найти правильную кодировку файла для нечитаемого файла и затем преобразовать его в utf8, после установки iconv
. Сначала я попробовал все кодировки, отображая (grep
) строку, содержащую слово www. (адрес веб-сайта):
for ENCODING in $(iconv -l); do echo -n "$ENCODING "; iconv -f $ENCODING -t utf-8 unreadablefile.txt 2>/dev/null| grep 'www'; done | less
Эта последняя командная строка показывает проверенную кодировку файла и затем переведенную / транскодированную строку.
Было несколько строк, которые показывали читабельные и непротиворечивые (по одному языку за раз) результаты. Я пробовал вручную некоторые из них, например:
ENCODING=WINDOWS-936; iconv -f $ENCODING -t utf-8 unreadablefile.txt -o test_with_${ENCODING}.txt
В моем случае это была китайская кодировка Windows, которая теперь читаема (если вы знаете китайский).