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

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

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

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

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

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

5
задан 16 May 2015 в 02:02

2 ответа

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

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

можно сделать это для всех txt файлов во всем dir

recode cp1250.. ./*.txt

И рекурсивно путем объединения с find

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

, стандартная опция состоит в том, чтобы использовать эти iconv команда, которая установлена по умолчанию, но это не изменяет окончания строки, таким образом, необходимо сделать это на другом шаге:

iconv -f cp1250 < file.txt | sed  

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

<час>

средства CR Возврат каретки (\r)
средства LF Перевод строки (\n)

Windows использует обоих, но подобное Unix системное использование [только 1 122] LF.

s/\r$//' > newfile.txt

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

<час>

средства CR Возврат каретки (\r)
средства LF Перевод строки (\n)

Windows использует обоих, но подобное Unix системное использование [только 1 122] LF.

0
ответ дан 16 May 2015 в 02:02

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

0
ответ дан 16 May 2015 в 12:02

Другие вопросы по тегам:

Похожие вопросы: