Конвертирование кодировок текстовых файлов

Есть ещё люди использующие Windows! И иногда они могут прислать вам текстовые файлы с расширением txt (они же не знают что текстовые файлы и без расширения бывают 🙂 ) или что-то типа такого. Если попытаться открыть эти файлы в gedit, без применения специального волшебства, то вместо русских букв будут каракули.

А что делать, если нужно не просто прочитать эти файлы, а работать с ними? Правильно, их нужно перекодировать в нормальную кодировку. Есть несколько рецептов этой магии:
1. Использовать встроенную утилиту iconv — это путь настоящего линуксойда, посему man iconv

2. Использовать другую утилиту: recode. Это путь тех, кто любит немного попроще. Но её сначала нужно установить:

sudo apt-get install recode

Использование этой утилиты немногим сложнее её установки:

recode CP1251..UTF8 file.txt

где:
CP1251 — кодировка в которой сейчас находится файл;
UTF8 — в какой кодировке файл должен быть;
file.txt — файл, который нужно перекодировать.

3. Использовать gedit. Этот способ я бы порекомендовал в случае если нужно перекодировать всего несколько файлов, причём внося в них изменения.
Открываем файл в «родной» кодировке:

gedit --encoding windows-1251 file.txt

Вносим все необходимые изменения, и в меню gedit выбираем Файл — Сохранить как…. В открывшемся окне указываем нужное имя файла и нормальную кодировку.
Замечание: С кодировкой CP1251 gedit не захотел открывать файл находящийся в кодировке windows-1251!

Если кто ещё знает способы — делитесь! Так как плюрализм способов решения задачи — это то что отличает Linux от других ОС.

Конвертирование кодировок текстовых файлов: 11 комментариев

  1. спасибо. Не знал про iconv и recode.
    Обычно я правлю в gconf-editor строки /apps/gedit-2/preferences/encodings/auto_detected и shown_in_menu добавляя WINDOWS-1251 сразу после UTF-8

  2. Подобными прогами можно пользоваться только тогда, когда точно известна кодировка исходного файла. А когда нет? Мне часто приходится работать с текстовыми файлами в причудливых кодировках. Я делаю проще пользуюсь самым лучшим текстовым редактором Kate, там нажимаю на Tools, потом Encodings и выбираю кодировку — выбираю до тех пор, пока не найду нужную. Но это в KDE на десктопе, а на нетбуке стоит GNOME и Kate — КDE’шную программу ставить туда не хочется, там я пользуюсь Geany, тоже неплохая прожка, но меняется кодировка там по другому (сам, кстати, не сразу нашел) — File, Open as. Потом все файлы сохраняю в UTF8.

  3. Зачем засырать другим и себе мозг??? Leafpad понимает все кодировки. Почему его не делают редактором по умолчанию-? Наверное, из вредности.

  4. Эти способы хороши, если нужно конвертировать всего несколько файлов (можно вручную открывать и kate, и gedit и т.п. и сохранять; kate здесь удобнее, т.к. уже уже открытый файл с абракадаброй хорошо перекодирует через Tool —> Encoding —> Autodetect), или если все файлы в одной известной кодировке. А если нужно перекодировать много файлов, а они в разных кодировках (практически, это koi8-r и window-1251)?
    Через Synaptic устанавливаем пакет enca. Пример использования:

    enconv -L ru -x UTF-8 *.txt

    Эта команда конвертирует все текстовые файлы (*.txt) из различных русских кодировок (-L ru) в кодировку юникод (-x UTF-8). enconv входит в пакет enca.

  5. Leafpad хорош, по функциональности схож с Notepad’ом: не умеет вообще ничего, кроме, собственно, печатания и чтения текста. Зато с кодировками проблем не имеет. Как раз то, что надо обычному юзеру.

  6. я написал простецкий скрипт, который показывает как выглядят первые строчки файла если перекодировать из cp1251 и предлагает выбор: перекодировать или следующую кодировку попробовать. мне кажется из консоли таки быстрее и удобне получается.

Добавить комментарий для alex Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *