Не работает функция 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;
}
?>

Оцени публикацию:
  • 24,101
Оценили человек: 24

Похожие статьи:

Справочники и учебники:


Комментарии посетителей:
  • Спасибо очень пригодилось!
    17 марта 2009, 14:04 коммент полезен : +2 # Гость
  • Спасибо!
    24 мая 2009, 16:42 коммент полезен : 0 # Гость
  • Реально очень полезная выручалка, в том случае если никак не получается совладать с кодировкой и локалями на серваке.
    26 мая 2009, 17:52 коммент полезен : 0 # Гость
  • Я замучался искать нормальный вариант) Спасибо!
    04 июля 2009, 18:41 коммент полезен : 0 # Гость
  • Большое ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!!
    16 сентября 2009, 07:13 коммент полезен : 0 # Гость
  • Спасибо!!!
    03 декабря 2009, 15:33 коммент полезен : +1 # Гость
  • Как ты это сделал, демон!! О_О
    Большущее благодарю!
    28 декабря 2009, 09:46 коммент полезен : 0 # Гость
  • Автору респектище!!! Очень помог.
    10 февраля 2010, 15:28 коммент полезен : 0 # Гость
  • большое спасибо! очень полезная вещь!:-)8 :-D :-D
    12 мая 2010, 07:54 коммент полезен : +1 # Alex (гость)
  • Спасибо, автор.
    19 мая 2010, 05:42 коммент полезен : 0 # Иван Старосайтов (гость)
  • Человечище!(yea)
    04 июня 2010, 19:14 коммент полезен : +1 # Andrey (гость)
  • Огромное спасибо!
    18 июня 2010, 15:00 коммент полезен : 0 # Andrey_tatarstan
  • Молодцом!!! Так держать)))))
    01 июля 2010, 08:54 коммент полезен : +1 # Koste (гость)
  • Благодарю! Отличная функция. Предлагаю сделать функцию наоборот и для других кодировок;-)
    21 июля 2010, 15:07 коммент полезен : 0 # александр
  • а куда ее вставить? я в пхп не силен, у меня на каталоге VirtueMart такая хрень....причем первый раз...раньше как то не было...хз в чем проблема

    джумла 1.5.18
    27 июля 2010, 04:29 коммент полезен : +1 # Artemonuchin
  • Не всегда функция strlen() на хостингах включена, встречалась и такая проблема, поэтому еще один вариант, более актуальный:

    function utf8_to_win1251($text)
    {
       $text=str_replace("xD0xB0","а",$text);  $text=str_replace("xD0x90","А",$text);
       $text=str_replace("xD0xB1","б",$text);  $text=str_replace("xD0x91","Б",$text);
       $text=str_replace("xD0xB2","в",$text);  $text=str_replace("xD0x92","В",$text);
       $text=str_replace("xD0xB3","г",$text);  $text=str_replace("xD0x93","Г",$text);
       $text=str_replace("xD0xB4","д",$text);  $text=str_replace("xD0x94","Д",$text);
       $text=str_replace("xD0xB5","е",$text);  $text=str_replace("xD0x95","Е",$text);
       $text=str_replace("xD1x91","ё",$text);  $text=str_replace("xD0x81","Ё",$text);
       $text=str_replace("xD0xB6","ж",$text);  $text=str_replace("xD0x96","Ж",$text);
       $text=str_replace("xD0xB7","з",$text);  $text=str_replace("xD0x97","З",$text);
       $text=str_replace("xD0xB8","и",$text);  $text=str_replace("xD0x98","И",$text);
       $text=str_replace("xD0xB9","й",$text);  $text=str_replace("xD0x99","Й",$text);
       $text=str_replace("xD0xBA","к",$text);  $text=str_replace("xD0x9A","К",$text);
       $text=str_replace("xD0xBB","л",$text);  $text=str_replace("xD0x9B","Л",$text);
       $text=str_replace("xD0xBC","м",$text);  $text=str_replace("xD0x9C","М",$text);
       $text=str_replace("xD0xBD","н",$text);  $text=str_replace("xD0x9D","Н",$text);
       $text=str_replace("xD0xBE","о",$text);  $text=str_replace("xD0x9E","О",$text);
       $text=str_replace("xD0xBF","п",$text);  $text=str_replace("xD0x9F","П",$text);
       $text=str_replace("xD1x80","р",$text);  $text=str_replace("xD0xA0","Р",$text);
       $text=str_replace("xD1x81","с",$text);  $text=str_replace("xD0xA1","С",$text);
       $text=str_replace("xD1x82","т",$text);  $text=str_replace("xD0xA2","Т",$text);
       $text=str_replace("xD1x83","у",$text);  $text=str_replace("xD0xA3","У",$text);
       $text=str_replace("xD1x84","ф",$text);  $text=str_replace("xD0xA4","Ф",$text);
       $text=str_replace("xD1x85","х",$text);  $text=str_replace("xD0xA5","Х",$text);
       $text=str_replace("xD1x86","ц",$text);  $text=str_replace("xD0xA6","Ц",$text);
       $text=str_replace("xD1x87","ч",$text);  $text=str_replace("xD0xA7","Ч",$text);
       $text=str_replace("xD1x88","ш",$text);  $text=str_replace("xD0xA8","Ш",$text);
       $text=str_replace("xD1x89","щ",$text);  $text=str_replace("xD0xA9","Щ",$text);
       $text=str_replace("xD1x8A","ъ",$text);  $text=str_replace("xD0xAA","Ъ",$text);
       $text=str_replace("xD1x8B","ы",$text);  $text=str_replace("xD0xAB","Ы",$text);
       $text=str_replace("xD1x8C","ь",$text);  $text=str_replace("xD0xAC","Ь",$text);
       $text=str_replace("xD1x8D","э",$text);  $text=str_replace("xD0xAD","Э",$text);
       $text=str_replace("xD1x8E","ю",$text);  $text=str_replace("xD0xAE","Ю",$text);
       $text=str_replace("xD1x8F","я",$text);  $text=str_replace("xD0xAF","Я",$text);
       $text=str_replace("xe2x84x96","№",$text);
       return $text;
    }
    25 сентября 2010, 10:49 коммент полезен : 0 # Гость
  • блин, заработало, полдня промучился над кодировками, thanks
    23 октября 2010, 14:36 коммент полезен : +1 # Vlad444 (гость)
  • Не легче загнать все сопоставления в массив ?
    07 ноября 2010, 12:17 коммент полезен : 0 # Илья
  • Огромное спасибо авторам! Очень помогли мне.
    06 июня 2011, 08:44 коммент полезен : 0 # Дмитрий4
  • Подскажите пожалуйста, где в joomla 1.5 прописывать данную функцию.
    06 октября 2012, 01:42 коммент полезен : 0 # Оксана1
  • Такое ощущение что этот скрипт никто не использовал, в цикле for явно ошибка!!!
    25 марта 2013, 06:37 коммент полезен : 0 # Дмитрий8
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » PHP »