Есть ещё люди использующие 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 от других ОС.
спасибо. Не знал про iconv и recode.
Обычно я правлю в gconf-editor строки /apps/gedit-2/preferences/encodings/auto_detected и shown_in_menu добавляя WINDOWS-1251 сразу после UTF-8
чем же iconv сложнее второго?
iconv -f … -t …. и в пайп
Подобными прогами можно пользоваться только тогда, когда точно известна кодировка исходного файла. А когда нет? Мне часто приходится работать с текстовыми файлами в причудливых кодировках. Я делаю проще пользуюсь самым лучшим текстовым редактором Kate, там нажимаю на Tools, потом Encodings и выбираю кодировку — выбираю до тех пор, пока не найду нужную. Но это в KDE на десктопе, а на нетбуке стоит GNOME и Kate — КDE’шную программу ставить туда не хочется, там я пользуюсь Geany, тоже неплохая прожка, но меняется кодировка там по другому (сам, кстати, не сразу нашел) — File, Open as. Потом все файлы сохраняю в UTF8.
http://habrahabr.ru/blogs/linux/47005/
Вот это лучше всего.
Зачем засырать другим и себе мозг??? Leafpad понимает все кодировки. Почему его не делают редактором по умолчанию-? Наверное, из вредности.
@gidiara
Я о таком редакторе ничего не слышал. Спасибо за наводку, попробуем!
gidiara, в нем даже банальной подсветки синтаксиса нет!
Эти способы хороши, если нужно конвертировать всего несколько файлов (можно вручную открывать и 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.
Leafpad хорош, по функциональности схож с Notepad’ом: не умеет вообще ничего, кроме, собственно, печатания и чтения текста. Зато с кодировками проблем не имеет. Как раз то, что надо обычному юзеру.
я написал простецкий скрипт, который показывает как выглядят первые строчки файла если перекодировать из cp1251 и предлагает выбор: перекодировать или следующую кодировку попробовать. мне кажется из консоли таки быстрее и удобне получается.
Александр, а поделиться ссылкой на скрипт с примерами использования?