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

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

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

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