Работа с текстовыми файлами, закодированными как Windows-1250 и UTF-8

5

Я часто переключаюсь между Ubuntu и Windows, поэтому у меня проблемы с кодировкой текстовых файлов.

Если я сохраню текстовый файл в Ubuntu, все работает отлично в обеих системах. Но Ubuntu не обнаруживает кодировку файлов, сохраненных в Windows. Каждый раз, когда я открываю «файл окон» в текстовом редакторе Ubuntu, мне нужно изменить параметры кодирования.

Решение меняет кодировку с Windows-1250 на utf-8.

Итак, вопрос заключается в том, как открыть каждый файл с помощью Windows-1250 и сохранить его с помощью utf-8 для каждого файла в подкаталогах текущего каталога (рекурсивно я имею в виду). Могу ли я сделать это в терминале или мне нужно какое-то внешнее приложение.

Я с нетерпением жду вашей помощи.

    
задан dagi12 15.05.2015 в 18:40
источник

2 ответа

7

Я предпочитаю использовать recode для этого. Он не установлен по умолчанию, но доступен через пакет с тем же именем. Он также изменяет окончание строк CRLF на LF.

sudo apt-get install recode
recode cp1250.. file.txt

Вы можете сделать это для всех файлов txt в целом каталоге

recode cp1250.. ./*.txt

И рекурсивно, комбинируя с find

find . -type f -name "*.txt" -exec recode cp1250.. {} +

Стандартная опция - использовать команду iconv , которая установлена ​​по умолчанию, но это не меняет окончания строки, поэтому вам нужно сделать это на другом шаге:

iconv -f cp1250 < file.txt | sed $'s/\r$//' > newfile.txt

В конечном итоге я бы рекомендовал изменить набор символов по умолчанию для вашего окна и строку, заканчивающуюся концами строк UTF-8 и UNIX (LF, \n ), чтобы избежать необходимости делать преобразование после факта.

CR означает Возврат каретки ( \r )
LF означает Линейный канал ( \n )

Windows использует обе, но unix-подобные системы используют только LF .

    
ответ дан geirha 15.05.2015 в 18:47
источник
0

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

    
ответ дан Bretsko 16.10.2016 в 18:53