Пошук по сайту...
Відпочинок для дітей! Табір Райдуга. Чорне море, Крим
Портал Знань Портал безперервного навчання

Портал знань — відкриті навчальні матеріали, дистанційне навчання, дистанційне тестування знань

Навчальні матеріали і Тестування знань


Акція! Сайт, що допоможе дітям...

Лабораторія СЕТ | Розробникам Веб-сайтів | Конвертація кодування UTF-8 у Windows-1251

Конвертація кодування UTF-8 у Windows-1251 (CP1251) у PHP 4 з підтримкою українських символів

PHP-скрипт конвертує UTF-8 у Windows-1251 (CP1251) з підтримкою українських символів. Скрипт працює і у 4-й версії PHP. Така функція стане у нагоді при розробці AJAX-застосувань, де передача даних на сервер йде у кодуванні UTF-8.

function Utf8ToWin($fcontents) {
    $out = $c1 = '';
    $byte2 = false;
    for ($c = 0;$c < strlen($fcontents);$c++) {
        $i = ord($fcontents[$c]);
        if ($i <= 127) {
            $out .= $fcontents[$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;
                }
            }
			// UKRAINIAN fix
			switch ($out_i){
				case 262: $out_i=179;break;// і
				case 182: $out_i=178;break;// І 
				case 260: $out_i=186;break;// є
				case 180: $out_i=170;break;// Є
				case 263: $out_i=191;break;// ї
				case 183: $out_i=175;break;// Ї
				case 321: $out_i=180;break;// ґ
				case 320: $out_i=165;break;// Ґ
			}
			$out .= chr($out_i);
			
            $byte2 = false;
        }
        if ( ( $i >> 5) == 6) {
            $c1 = $i;
            $byte2 = true;
        }
    }
    return $out;
}

Коментарі відвідувачів (4)
[ Показати коментарі ]

Додайте власний коментар
Автор

Коментар

Сергій Титенко
3.09.2010
Тепер існує простіший вихід:
$newText=iconv('UTF-8', 'CP1251', $text);

Працює у PHP версії >= 4.0.5.
Сергій
21.07.2009
Справді. Також є проблема із кутовими лапками.
Треба дописати блок // UKRAINIAN fix ...
Хто допише, пришліть плз.
lab[a]setlab.net
Володимир
20.07.2009
Дякую за скрипт. У мене виникла одна проблема при використанні цього скрипта, а саме символ "№" зникає після перекодування. Може хто підкаже як цю проблему вирішити. Моя адреса: k_vladimir@gala.net
mserg
9.10.2008
Дякую! Нарешті зустрів варіант, що нормально працює і з українськими символами.
Кількість входів в цьому місяці : 3570
Приєднуйтесь!
Сторінки, близькі за змістом
©2006-2017 Лабораторія СЕТ, Сергій Титенко
При використанні матеріалів посилання, гіперпосилання для web-ресурсів, на www.setlab.net обов'язкове
Зв'язок: lab@setlab.net 
Лабораторія СЕТ powered by FreshKnowledge
Студія Інновацій — Розробляємо розумні сайти
Rambler's Top100 НТУУ "КПІ"
Друзі і партнери
Український рейтинг TOP.TOPUA.NET