Руками работать не хотелось, а головой не получалось. Но в результате с легким матерком написал вот этот bash-скрипт:
#!/bin/bashОн достаточно резво конвертирует все файлы в текущей директории из windows-1251 (cp1251) в UTF-8:
FILES="./*.php"
for i in $FILES
do
echo "Converting $i to UTF-8 encoding..."
mv $i $i.icv
iconv -f WINDOWS-1251 -t UTF-8 $i.icv > $i
rm -f $i.icv
done
aldekein@Aldekein:~/123$ ./recode
Converting ./add_by_emai2.php to UTF-8 encoding...
Converting ./add_by_email.php to UTF-8 encoding...
Converting ./fs.php to UTF-8 encoding...
Converting ./head.inc.php to UTF-8 encoding...
Если же туда присобачить вывод команды find -iname '*.php', то получим еще и рекурсивную работу в папке...

2 комментария:
Еще один вариант - это сконвертировать непосредственно с помощью sql запроса:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Преимущество в том, что здесь средствами СУБД будет произведен анализ данных, уже содержащихся в таблице. И при необходимости тип данных будет изменен. Т.е. если в поле с типом TEXT хранились данные в однобайтовой кодировке, а при конвертации в utf8 выяснится, что данные туда уместятся только если сменить тип, например, на MEDIUMTEXT, то это и будет сделано автоматически.
Подробнее здесь
http://dev.mysql.com/doc/refman/5.0/en/alter-table.html
Добрый вечер,
а не могли бы Вы объяснить чайнику подробнее что куда положить и как запустить этот скрипт?
Отправить комментарий