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

28 сентября 2009
Рубрика: Заметки
Теги: , , , ,

Zeboton

Есть ещё люди использующие 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. vanoc28 сентября 2009 ~ 20:20

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

  2. guyvernk28 сентября 2009 ~ 21:04

    чем же iconv сложнее второго?
    iconv -f … -t …. и в пайп

  3. uuii29 сентября 2009 ~ 02:27

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

  4. usama18 октября 2009 ~ 09:12

    http://habrahabr.ru/blogs/linux/47005/

    Вот это лучше всего.

  5. gidiara18 ноября 2009 ~ 16:33

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

  6. Zeboton18 ноября 2009 ~ 18:04

    @gidiara
    Я о таком редакторе ничего не слышал. Спасибо за наводку, попробуем!

  7. Softwayer28 ноября 2009 ~ 20:50

    gidiara, в нем даже банальной подсветки синтаксиса нет!

  8. alex5 февраля 2010 ~ 02:01

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

  9. Fermalion28 февраля 2010 ~ 14:59

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

  10. Aleksandr11 декабря 2012 ~ 12:56

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

  11. Zeboton13 декабря 2012 ~ 08:06

    Александр, а поделиться ссылкой на скрипт с примерами использования?

Ваш комментарий

*