PDA

Просмотр полной версии : Перекодирование текста из UTF-8 в windows-1251


administrator
02.08.2008, 13:22
Перекодирование текста из UTF-8 в windows-1251

Бывают случаи, когда использовать функция iconv нет возможности. Например, на сервере не установлено это расширение (iconv). Ниже приведенная функция поможет решить эту задачу. Используется для конвертирования символов кириллицы, так как латинские символы выглядят одинаково в любых кодировках
Функция конвертирования строки из кодировки utf-8 в кодировку win-1251




//Convert string from UTF-8 to WINDOWS-1251
function utf2win($string) {
for ($c = 0; $c < strlen($string); $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;
}