$txt = iconv ("UTF-8","windows-1251",$str);
Но ввиду того, что она доступна с версии PHP >= 4.0.5, возможности её использовния не было. Приходится прибегать к некоторым
извращениям. Суть которых сводится к обработке строки с целью замены двухбайтной кодировки UTF-8 на однобайтную 1251. Почитаем о UTF8 в wikipedia.
В результате, исследовав формат UTF-8, получим:
//
//преобразование из utf8 в win1251
//evg 08.01.2010
//
function utf8_w1251($str)
{
$w="";
for($i=0;$i<strlen($str);$i++)
{
$c1=ord($str[$i]);//берем код символа
if($c1 <= 128){//до кода 128 все символа как в ASCII
$w.=chr($c1);
continue;
}
$c2=ord($str[++$i]);//берем код следующего символа
$c = (($c1 & 31) << 6) + ($c2 & 63); //а вот тут само преобразование
if($c >= 1040 && $c <= 1103) //перебор русских кодов русских букв
{
$w.= chr(($c - 1040) + 192); //вычтем код буквы A в UTF-8 и прибавим его же в 1251
}
else
{
switch($c) //здесь заменим коды букв Ё и ё и других, не входящих в диапазон русских букв,
//которых нам будет нужно
{
case 0x0401:$w.="Ё";break;
case 0x0451:$w.="ё";break;
}
}
}
return $w;
}
Этот код не трудно переделать под любой другой язык программирования.А вот нашел более раннюю мою функцию перекодировку строки посредством использования таблицы перекодировки и функции strtr:
$escape_table = array(
'%20'=>' ','%21'=>'!', '%2C'=>',', '%3A'=>':', '%3B'=>';','%u0410'=>'А','%u0411'=>'Б','%u0412'=>'В','%u0413'=>'Г',
'%u0414'=>'Д','%u0415'=>'Е','%u0401'=>'Ё','%u0416'=>'Ж','%u0417'=>'З','%u0418'=>'И','%u0419'=>'Й','%u041A'=>'К',
'%u041B'=>'Л','%u041C'=>'М','%u041D'=>'Н','%u041E'=>'О','%u041F'=>'П','%u0420'=>'Р','%u0421'=>'С','%u0422'=>'Т',
'%u0423'=>'У','%u0424'=>'Ф','%u0425'=>'Х','%u0426'=>'Ц','%u0427'=>'Ч','%u0428'=>'Ш','%u0429'=>'Щ','%u042A'=>'Ъ',
'%u042B'=>'Ы','%u042C'=>'Ь','%u042D'=>'Э','%u042E'=>'Ю','%u042F'=>'Я',
'%u0430'=>'а','%u0431'=>'б','%u0432'=>'в','%u0433'=>'г','%u0434'=>'д','%u0435'=>'е','%u0451'=>'ё','%u0436'=>'ж',
'%u0437'=>'з','%u0438'=>'и','%u0439'=>'й','%u043A'=>'к','%u043B'=>'л','%u043C'=>'м','%u043D'=>'н','%u043E'=>'о',
'%u043F'=>'п','%u0440'=>'р','%u0441'=>'с','%u0442'=>'т','%u0443'=>'у','%u0444'=>'ф','%u0445'=>'х','%u0446'=>'ц',
'%u0447'=>'ч','%u0448'=>'ш','%u0449'=>'щ','%u044A'=>'ъ','%u044B'=>'ы','%u044C'=>'ь','%u044D'=>'э','%u044E'=>'ю',
'%u044F'=>'я',
);
function unicode_escape($str)
{
global $escape_table;
$str = rawurldecode($str);
return strtr($str, @$escape_table);
}