Учитывая текстовый файл в ubuntu (или debian unix в целом), как мне узнать кодировку файла? Могу ли я запустить на нем od или hexdump, чтобы проверить его кодировку? Что я должен искать?

2
Jacques René Mesrine 12 Дек 2009 в 07:00

2 ответа

Для этого есть много инструментов. Попробуйте выполнить поиск в Интернете по запросу «обнаружить кодировку». Вот некоторые из инструментов, которые я нашел:

  • Классы интернационализации для Unicode (ICU) — отличное место для начала. См., в частности, их страницу, посвященную обнаружению набора символов.

  • Chardet — это модуль Python для угадывания кодировки. файла. См. chardet.feedparser.org

  • Инструмент командной строки *nix file определяет типы файлов, но также может обнаруживать кодировки, если они упоминаются в файле (например, если в файл). См. man file

  • Модули Perl Encode::Detect и Encode::Guess .

  • Кто-то задал аналогичный вопрос в StackOverflow. Найдите вопрос PHP: определить кодировку и сделать все UTF-8. Это в контексте извлечения файлов из сети и использования PHP, но вы можете написать PHP-скрипт командной строки.

Обратите внимание на то, что на странице ICU говорится об обнаружении набора символов: «Обнаружение набора символов — это… в лучшем случае неточная операция, использующая статистику и эвристику…». трудная работа. Не забывайте, что октеты в файле могут иметь неоднозначную кодировку, то есть правильно интерпретироваться с использованием нескольких разных кодировок. Они также могут иметь смешанную кодировку, т. е. разные подмножества октетов имеют смысл интерпретироваться в разных кодировках. Вот почему я не могу порекомендовать ни одного инструмента командной строки, который всегда выполняет свою работу.

Если у вас есть один файл, и вы просто хотите преобразовать его в известную кодировку, моя хитрость заключается в том, чтобы открыть файл в текстовом редакторе, который может импортировать с использованием множества различных кодировок, таких как TextWrangler или OpenOffice.org. Сначала откройте файл и дайте редактору угадать кодировку. Взгляните на результат. Если вас это не устраивает, угадайте кодировку, откройте файл в редакторе, указав эту кодировку, и посмотрите на результат. Затем сохраните как известную кодировку, например. УТФ-16.

1
Jim DeLaHunt 12 Дек 2009 в 10:39

Вы можете использовать энку. Enca — это небольшой инструмент командной строки для обнаружения и преобразования кодировок.

Вы можете установить его в debian/ubuntu следующим образом:

apt-получить установку enca

Для того, чтобы им воспользоваться, просто позвоните

enca ИМЯ ФАЙЛА

Также см. справочную страницу для получения дополнительной информации.

0
Phil 27 Мар 2012 в 18:18