Здравствуйте.
Задача: сменить кодировку у группы php файлов, лежащих в одной папке из ISO-8859-1 в UTF-8.
Средство: Нагуглил следующий скрипт:
[spoiler]#!/bin/bash
FROM=iso-8859-1
TO=UTF-8
ICONV="iconv -f $FROM -t $TO"
# Convert
find /some/folder/ -type f -name "*" | while read fn; do
cp ${fn} ${fn}.bak
$ICONV < ${fn}.bak > ${fn}
rm ${fn}.bak
done
[/spoiler]
Он работает замечательно. У всех файлов, которые он переконвертировал, была кодировка UTF-8.
Но самый главный недостаток то, что все русские буквы были заменены на кракозябры.
Т.е. я открывал в gedit'е файл(а gedit уже умеет с cp1251 по умолчанию работать ) и видел нормальные русские буквы, а кодировка была ISO-8859-1, а сменив скриптом кодировку, узрел кракозябры теперь уже и в gedit'e, хоть кодировка и UTF-8.
Т.е. в принципе можно вручную просто копируя ctrlC-ctrlV из гедита весь код скопировать в файлы с UTF-8, но файлов много и делать долго.
Подскажите, как можно изменить скрипт, чтобы он конвертировал и русский текст в UTF-8 без окракозябривания?
Для примера таки файлик бы выложили
в приложении
$ enca 0-3.php
MS-Windows code page 1251
LF line terminators
$ iconv -f cp1251 -t utf8 0-3.php
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle(" !!!");
?><table border="0" bordercolor="white" width="100%" align="center"
cellpadding="0" cellspacing="20">
<tr><td>
<font color="2dc6f2" face="arial" ><B>ПРОДУКТ</B></FONT>
<hr color="2dc6f2" width="100%">
</center>
<p align=justify><font size="2" face="arial"><b>
Совершенно новая схема кредитования. С новым продуктом
<BR><BR>
<CENTER><FONT FACE="ARIAL" COLOR="2DC6F2" SIZE="4"><B>Особенности данного продукта:</B> </FONT> </CENTER>
<br>• Необходимо три документа:
</table>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Цитата: hedgeven от 01 Сентября 2010, 13:14$ enca 0-3.php
MS-Windows code page 1251
LF line terminators
А я смотрел кодировку в Geany и он
смотрел мне в глаза и врал .
А когда я попробовал перевести recode'ом, а не iconv'ом в utf-8 оно мне говорило:
recode: ./0-3.php failed: Ambiguous output in step `CR-LF..data'
Мораль сей басни такова: не смотри кодировку geany, да не переводи recode.
Ramen.
Всем спасибо.