2009-03-27 4 views

ответ

19

Ubuntu имеет recode

$ sudo apt-get install recode 
$ recode UTF-8..latin1 *.php 

Рекурсивный, благодаря Ted Dziuba:

$ find . -name "*.php" -exec recode UTF-8..latin1 {} \; 
+1

перекодировать является довольно стандартная программа Linux - не совсем стандартно, что он всегда устанавливается по умолчанию, но он должен быть доступен на все дистрибутивы, а не только Ubuntu. –

+0

как я могу сделать это рекурсивно? – Svish

+0

Рекурсивно, это найти. -name "* .php" -exec recode UTF-8..latin1 {} \; –

9

Я думаю Iconv ваш ответ ...

Форма мужчина Iconv:

 
    NAME 
     iconv - Convert encoding of given files from one encoding to another 

    SYNOPSIS 
     iconv -f encoding -t encoding inputfile 

    DESCRIPTION 
     The iconv program converts the encoding of characters in inputfile from one coded 
     character set to another. The result is written to standard output unless otherwise 
     specified by the --output option. 

     ..... 

Таким образом, вы, вероятно, может сделать

find $my_base_dir -name "*.php" -o -name "*.html" -exec sh -c "(\ 
    iconv -t ISO88592 -f UTF8 {} -o {}.iconv ; \ 
    mv {}.iconv {} ; \ 
)" \; 

Это будет рекурсивно найти соответствующим образом названные файлы и перекодировать их (необходим временный файл, так как iconv будет усекать вывод перед началом работы).