Сменить кодировку файла(ов) в ubuntu

Хоть способы смены кодировки описанные в статье подходит для большинства дистрибутивов linux, но т.к. новички всё чаще выбирают ubuntu, то я решил обозвать статью именно так(Подразумевается, что опытные пользователи и сами знают, как сменить кодировку).

В начале небольшое философское отступление.

Довольно часто когда пользователи переходят с windows на linux у них возникает очень большое количество вопросов. Если есть знакомый линуксоид, то связываемся с ним и пол дела сделано. А вот если знакомых нет, то может помочь только интернет… если гугло-яндексинг ни к чему хорошему не приводит, то зачастую «грустный панда» возвращается на форточки. Проблема в том, что большинство не понимает(или не знает) о философии СПО и опенсорса. Если спросить, что то о windows, то большинство ответов будет такие: Перезагрузись>переустанови винду> выбрось комп с окошка. В linux принято помогать друг другу. Так к чему я это…  По запросу, который в заголовке статьи, было несколько переходов на туксика, но я то знаю, что на сайте нет не было статьи о кодировке. Так вот почему эти люди не попросили помощи в комментариях или на специальной странице… для меня это загадка. Есть даже целые ресурсы посвященные вопросам и ответам, например http://ubuntovod.ru/ask/ . Это первый российский ресурс подобного формата, но если на западе анологичный сайт очень популярен и ежедневно появляется 10-ки ответов и вопросов, то у нас 1 вопрос в 3-4 дня. Нужно приучать общество, что линуксоиды не злые бородатые дяди с пивом, а дружелюбное и отзывчивое сообщество.

Вернёмся к кодировке.

Самый простой способ сменить кодировку у файла это открыть его двойным кликом мыши, затем выбрать Файл>Сохранить как(Shift+Ctrl+S) и выбрать кодировку в нижнем левом углу

Смена кодировки в gedit

Затем останется только кликнуть кнопку «Сохранить».

С одиночным файлом понятно, а вот что делать если надо сменить кодировку у группы файлов в каталоге?
Здесь нам поможет bash и программа iconv
И то и другое есть в стандартной сборке ubuntu, по этому примемся за создание скрипта. Для удобства поместим скрит рядом с другими скриптами наутилуса:

gedit ~/.gnome2/nautilus-scripts/Кодировка

И вставляем в открывшийся редактор следующий текст:

#!/bin/bash
ls > tempffile
a=$(zenity --text "Укажите исходную кодировку файла" --entry)
b=$(zenity --text "Укажите желаемую кодировку файла" --entry)
sed -i 's/[ ]/_/g' tempffile
for n in $(cat tempffile);
do
m=`echo $n | sed 's/_/ /g'`
iconv -f $a -t $b -o "$m.$b" "$m"
mv "$m.$b" "$m"
done
rm tempffile

Сохраняем, закрываем и делаем скрипт исполняемым:

chmod +x ~/.gnome2/nautilus-scripts/Кодировка

Что бы применить скрипт нажимаем на любом файле в каталоге(не на самом каталоге, а именно на файле!), выбираем Сценарии > Кодировка, отвечаем на вопросы(Какая исходная кодировка файла и в какую конвентировать), и дело сделано.

Внимание! Этот скрипт изменит кодировку ВСЕХ файлов в каталоге, а также создаст и уничтожит файл «tempffile» (я думаю таково файла ни у кого не должно быть), поэтому желательно все файлы, которые надо перекодировать, перенести в отдельный каталог.

P.S.: В скрипте используется дико индусский способ решения проблемы с пробелами,и я не помню в каком состоянии был, когда это придумал, но он работает :)

Поделись статьёй с друзьями

Или просто поиграйся с кнопочками

3 комментария на «Сменить кодировку файла(ов) в ubuntu»

  1. pet:

    «В linux принято помогать друг другу.»
    вы жжоте!
    в линукс принято отсылать к манам и хауту!

  2. работает. Приятно. Спасибо.

Добавить комментарий