Фотогалереи

Помощь при использовании сайта

Перекодировка текстовых файлов из cp1251 в UTF-8 с помощью iconv

В Windows по умочанию используется кодировка символов CP1251, чем иногда доставляет проблем пользователям других, нормальных ОС, которые давно перешли на юникод и забыли о проблемах с кодировками как страшный сон. Но пользователи Windows как американцы, не знают, что существуют другие страны ОС и сохраняют субтитры в CP1251 что делает их нечитабельными для других.

Для решения этой проблемы есть iconv который как раз и служит для перекодировки текстовых файлов из одной кодировки в другую. Во всех почти дистрибутивах данный пакет устанавливается по умолчанию, но если его вдруг не оказалось - установите его с помощью вашего пакетного менеджера.

Для перекодировки достаточно ввести всего одну команду в терминале, а именно:

iconv -f cp1251 -t utf8 /Video/somefile.srt -o /Video/subtitles.srt

Поясню: ключ "f" задает исходную кодировку в которой файл находится сейчас, ключ "t" указывает целевую кодировку, ключ "o" задает путь для сохранения перекодированного файла.

Вот, все очень просто. Так же вы можете таким образом кодировать любые текстовые файлы. Часто и тексты песен попадаются с такой неприятной особенностью. 

 

Недавно узнал более простой и понятный способ перекодировки текстовых файлов - с помощью enconv.

Не буду приводить полного синтаксиса и описания всех ключей. Для перекодировки достаточно одного, например:

enconv -x UTF-8 somefile.txt

С помощью данной команды мы перегнали текст в UTF-8. Да, именно, просто перегнали без необходимости указания исходной кодировки. Все просто, указываем лишь ту которую хотим получить. Желательно сделать резервную копию файла, так как насколько я понял enconv'у нельзя задать выходной файл и изменяться кодировка будет прямо в исходном файле.

Если у кого то есть еще какие то методы перекодировки текстовых файлов - прошу в каменты.

3.820515
39 votes
Ваша оценка: Нет


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Аватар пользователя anonymous

У enconv есть еще клевый параметр -c - автоматическая перекодировка, я так понимаю он перекодируют в указанную кодировку в локали (а это как правило utf-8 родной). Поэтому для того чтобы cp1251 перекодировать, достаточно просто написать "enconv -c file.txt" -и всё) У меня так с книжкой сработало.

Аватар пользователя admin

В линухе привык все объяснять машине явно, тем более черт его знает что там дистростроители с локалями намудрили, но как быстрый вариант - очень хорошо, спасибо за дополнение.

Аватар пользователя anonymous

Мне ещё один параметр вводить пришлось - язык, на котором были написаны комментарии в Java-программах. Команда:
enconv -L russian -x UTF-8 ./file

Кстати, чтобы перекодировать все java файлы в текущей директории и далее рекурсивно, пользуюсь командой
find . -name '*.java' -exec enconv -L russian -x UTF-8 {} \;