LINUX.ORG.RU

*.php из cp1251 в utf8 рекурсивно


0

2

Пытаюсь в заданной папке и всех ее подпапках преобразовать файлы php (и PHP) из cp1251 в utf8

$ find /папка -type f -iname «*\.php» -exec recode -f cp1251..utf8 {} \; -print

Список файлов выдает правильно, но фактически конвертации не происходит.
Где ошибка?



Последнее исправление: h0lder (всего исправлений: 1)
Ответ на: комментарий от anonymous

Спасибо, помогло.
Вот только портятся файлы, которые уже были в utf8.
Как их пропускать при конвертации?

h0lder
() автор топика
Ответ на: комментарий от anonymous

Пожалуйста, можно подробнее.
Для меня это пока слишком сложные конструкции, чтобы додуматься как туда вписать enconv.

h0lder
() автор топика
Ответ на: комментарий от anonymous

пробовал такие команды

find /папка -name «*.php» -exec enconv -x UTF8 {} \;
find /папка -iname «*\.php» -exec enconv {} \;
find /папка -name «*.php» -exec enconv {} \;
find /папка -name «*.php» |enconv
find /папка -name «*.php» |enconv -x UTF-8

не конвертирует.

а вот эта:

find /папка -type f -iname «*\.php» -exec recode -f cp1251..utf8 {} \;

портит файлы, которые уже в кодировке UTF-8

h0lder
() автор топика
Ответ на: комментарий от tiandrey

если убрать -f то получаем сообщение:

recode: /file.php failed: Ambiguous output in step `CR-LF..data'

-f, --force

force recodings even when not reversible

h0lder
() автор топика
Ответ на: комментарий от h0lder

Файлы в cp1251, но конец строки LF? recode ведь меняет в том числе и переводы строк с CRLF на LF, если обламывается, то и файл не трогает.

tiandrey ★★★★★
()
Ответ на: комментарий от h0lder

enconv так используется: вместо

recode -f cp1251..utf8
нужно написать
enconv -L ru -x utf8

tiandrey ★★★★★
()
Ответ на: комментарий от h0lder

вот это я дал...
все уже давно работает

в тестовых файлах не было русских букв, поэтому и не конвертировало в utf8

h0lder
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.