no_santa
Снегур
Проблема с перекодировкой
Есть функция
всем хороша, кроме того, что вместо символов
№ « » выдает конкретные кракозябры.
Как исправить?
Заранее спасибо тем, кто в ман не послал, или послал в точное место мана
-~{}~ 30.04.08 17:58:
в т.ч. символ "номер" - №
Есть функция
PHP:
function win2uni($char) {
$code = ord($char);
if ($code > 128) {
$code = $code + 848;
}
$string = '';
if ($code < 128) {
// its an ASCII char no encoding needed
$string .= chr($code);
} elseif ($code < 1 << 11) {
// its a 2 byte UTF-8 char
$string .= chr(192 + ($code >> 6));
$string .= chr(128 + ($code & 63));
} elseif ($code < 1 << 16) {
// its a 3 byte UTF-8 char
$string .= chr(224 + ($code >> 12));
$string .= chr(128 + (($code >> 6) & 63));
$string .= chr(128 + ($code & 63));
} elseif ($code < 1 << 21) {
// its a 4 byte UTF-8 char
$string .= chr(240 + ($code >> 18));
$string .= chr(128 + (($code >> 12) & 63));
$string .= chr(128 + (($code >> 6) & 63));
$string .= chr(128 + ($code & 63));
} elseif ($code < 1 << 26) {
// its a 5 byte UTF-8 char
$string .= chr(248 + ($code >> 24));
$string .= chr(128 + (($code >> 18) & 63));
$string .= chr(128 + (($code >> 12) & 63));
$string .= chr(128 + (($code >> 6) & 63));
$string .= chr(128 + ($code & 63));
} else {
// its a 6 byte UTF-8 char
$string .= chr(252 + ($code >> 30));
$string .= chr(128 + (($code >> 24) & 63));
$string .= chr(128 + (($code >> 18) & 63));
$string .= chr(128 + (($code >> 12) & 63));
$string .= chr(128 + (($code >> 6) & 63));
$string .= chr(128 + ($code & 63));
}
return $string;
}
№ « » выдает конкретные кракозябры.
Как исправить?
Заранее спасибо тем, кто в ман не послал, или послал в точное место мана

-~{}~ 30.04.08 17:58:
в т.ч. символ "номер" - №
