Как определить таблицу кодирования текстового файла - PullRequest
43 голосов
/ 23 ноября 2010

У меня есть .txt и .java файлы, и я не знаю, как определить таблицу кодирования файлов (Unicode, UTF-8, ISO-8525,…). Существует ли какая-либо программа для определения кодировки файла или для просмотра кодировки?

Ответы [ 5 ]

51 голосов
/ 23 ноября 2010

Если вы работаете в Linux, попробуйте file -i filename.txt.

$ file -i vol34.tex 
vol34.tex: text/x-tex; charset=us-ascii

. Для справки, вот мое окружение:

$ which file
/usr/bin/file
$ file --version
file-5.09
magic file from /etc/magic:/usr/share/misc/magic

Некоторые file версии (например, file-5.04 в OS X / macOS) имеют несколько отличающиеся параметры командной строки:

$ file -I vol34.tex 
vol34.tex: text/x-tex; charset=us-ascii
$ file --mime vol34.tex
vol34.tex: text/x-tex; charset=us-ascii

Также посмотрите здесь .

24 голосов
/ 23 ноября 2010

Откройте файл с помощью Notepad ++ и увидите в правом нижнем углу имя таблицы кодирования.А в меню кодировки вы можете изменить таблицу кодирования и сохранить файл.

10 голосов
/ 23 ноября 2010

Вы не можете надежно определить кодировку из текстового файла - вы можете сделать обоснованное предположение, выполнив поиск не-ascii символа и попытавшись определить, является ли это комбинацией Юникода, которая имеет смысл на языках, которые выразбор.

4 голосов
/ 23 ноября 2010

См. Этот вопрос и выбранный ответ . Там нет безошибочный способ сделать это. В лучшем случае, вы можете исключить вещи. Кодировки UTF, на которые вы вряд ли получите ложные срабатывания, но 8-битные кодировки сложны, особенно если вы не знаете начальный язык. Ни один инструмент в настоящее время не обрабатывает все распространенные 8-битные кодировки из Mac, Windows, Unix, но выбранный ответ обеспечивает алгоритмический подход, который должен адекватно работать для определенного подмножества кодировок.

1 голос
/ 10 декабря 2016

В текстовом файле нет заголовка, который сохраняет кодировку или около того. Вы можете попробовать команду 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, которая теперь читаема (если вы знаете китайский).

...