Не работает функция iconv(), а нужно конвертнуть из UTF-8 в windows-1251

Что же делать, когда на хостинге не работает функция iconv() и php выдает Call to undefined function:  iconv(), а нужно конвертнуть из UTF-8 в windows-1251

На помощь прийдет следующая функция:

function utf8_to_win($string){
    for ($c=0;$c         $i=ord($string[$c]);
        if ($i <= 127) @$out .= $string[$c];
            if (@$byte2){
                $new_c2=($c1&3)*64+($i&63);
                $new_c1=($c1>>2)&5;
                $new_i=$new_c1*256+$new_c2;
                if ($new_i==1025){
                    $out_i=168;
                } else {
                   if ($new_i==1105){
                        $out_i=184;
                    } else {
                        $out_i=$new_i-848;
                    }
                }
                @$out .= chr($out_i);
                $byte2 = false;
            }
            if (($i>>5)==6) {
                $c1 = $i;
                $byte2 = true;
            }
    }
    return $out;
}
?>


09.07.2007 21:20

Комментарии

Спасибо очень пригодилось!
|
Спасибо!
|
Реально очень полезная выручалка, в том случае если никак не получается совладать с кодировкой и локалями на серваке.
|
Я замучался искать нормальный вариант) Спасибо!
|
Большое ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!!
|
Спасибо!!!
|
Как ты это сделал, демон!! О_О Большущее благодарю!
|
Автору респектище!!! Очень помог.
|
большое спасибо! очень полезная вещь! :-)8 :-D :-D
Alex |
Спасибо, автор.
Иван Старосайтов |
Человечище! (yea)
Andrey |
Огромное спасибо!
Andrey_tatarstan |
Молодцом!!! Так держать)))))
Koste |
Благодарю! Отличная функция. Предлагаю сделать функцию наоборот и для других кодировок ;-)
Александр |
а куда ее вставить? я в пхп не силен, у меня на каталоге VirtueMart такая хрень....причем первый раз...раньше как то не было...хз в чем проблема джумла 1.5.18
Artemonuchin |
Не всегда функция strlen() на хостингах включена, встречалась и такая проблема, поэтому еще один вариант, более актуальный: function utf8_to_win1251($text) { $text=str_replace("\xD0\xB0","а",$text); $text=str_replace("\xD0\x90","А",$text); $text=str_replace("\xD0\xB1","б",$text); $text=str_replace("\xD0\x91","Б",$text); $text=str_replace("\xD0\xB2","в",$text); $text=str_replace("\xD0\x92","В",$text); $text=str_replace("\xD0\xB3","г",$text); $text=str_replace("\xD0\x93","Г",$text); $text=str_replace("\xD0\xB4","д",$text); $text=str_replace("\xD0\x94","Д",$text); $text=str_replace("\xD0\xB5","е",$text); $text=str_replace("\xD0\x95","Е",$text); $text=str_replace("\xD1\x91","ё",$text); $text=str_replace("\xD0\x81","Ё",$text); $text=str_replace("\xD0\xB6","ж",$text); $text=str_replace("\xD0\x96","Ж",$text); $text=str_replace("\xD0\xB7","з",$text); $text=str_replace("\xD0\x97","З",$text); $text=str_replace("\xD0\xB8","и",$text); $text=str_replace("\xD0\x98","И",$text); $text=str_replace("\xD0\xB9","й",$text); $text=str_replace("\xD0\x99","Й",$text); $text=str_replace("\xD0\xBA","к",$text); $text=str_replace("\xD0\x9A","К",$text); $text=str_replace("\xD0\xBB","л",$text); $text=str_replace("\xD0\x9B","Л",$text); $text=str_replace("\xD0\xBC","м",$text); $text=str_replace("\xD0\x9C","М",$text); $text=str_replace("\xD0\xBD","н",$text); $text=str_replace("\xD0\x9D","Н",$text); $text=str_replace("\xD0\xBE","о",$text); $text=str_replace("\xD0\x9E","О",$text); $text=str_replace("\xD0\xBF","п",$text); $text=str_replace("\xD0\x9F","П",$text); $text=str_replace("\xD1\x80","р",$text); $text=str_replace("\xD0\xA0","Р",$text); $text=str_replace("\xD1\x81","с",$text); $text=str_replace("\xD0\xA1","С",$text); $text=str_replace("\xD1\x82","т",$text); $text=str_replace("\xD0\xA2","Т",$text); $text=str_replace("\xD1\x83","у",$text); $text=str_replace("\xD0\xA3","У",$text); $text=str_replace("\xD1\x84","ф",$text); $text=str_replace("\xD0\xA4","Ф",$text); $text=str_replace("\xD1\x85","х",$text); $text=str_replace("\xD0\xA5","Х",$text); $text=str_replace("\xD1\x86","ц",$text); $text=str_replace("\xD0\xA6","Ц",$text); $text=str_replace("\xD1\x87","ч",$text); $text=str_replace("\xD0\xA7","Ч",$text); $text=str_replace("\xD1\x88","ш",$text); $text=str_replace("\xD0\xA8","Ш",$text); $text=str_replace("\xD1\x89","щ",$text); $text=str_replace("\xD0\xA9","Щ",$text); $text=str_replace("\xD1\x8A","ъ",$text); $text=str_replace("\xD0\xAA","Ъ",$text); $text=str_replace("\xD1\x8B","ы",$text); $text=str_replace("\xD0\xAB","Ы",$text); $text=str_replace("\xD1\x8C","ь",$text); $text=str_replace("\xD0\xAC","Ь",$text); $text=str_replace("\xD1\x8D","э",$text); $text=str_replace("\xD0\xAD","Э",$text); $text=str_replace("\xD1\x8E","ю",$text); $text=str_replace("\xD0\xAE","Ю",$text); $text=str_replace("\xD1\x8F","я",$text); $text=str_replace("\xD0\xAF","Я",$text); $text=str_replace("\xe2\x84\x96","№",$text); return $text; }
|
блин, заработало, полдня промучился над кодировками, thanks
Vlad444 |
Не легче загнать все сопоставления в массив ?
Илья |
Огромное спасибо авторам! Очень помогли мне.
Дмитрий |
Подскажите пожалуйста, где в joomla 1.5 прописывать данную функцию.
Оксана |
Такое ощущение что этот скрипт никто не использовал, в цикле for явно ошибка!!!
Дмитрий |

Copyrights © 2007 - 2026 YaPro.Ru