This is edited functions utf8_to_cp1251 and cp1251_to_utf8.
Changes: Check current string encoding.
<?php
function cp1251_to_utf8($s)
{
if ((mb_detect_encoding($s,'UTF-8,CP1251')) == "WINDOWS-1251")
{
$c209 = chr(209); $c208 = chr(208); $c129 = chr(129);
for($i=0; $i<strlen($s); $i++)
{
$c=ord($s[$i]);
if ($c>=192 and $c<=239) $t.=$c208.chr($c-48);
elseif ($c>239) $t.=$c209.chr($c-112);
elseif ($c==184) $t.=$c209.$c209;
elseif ($c==168) $t.=$c208.$c129;
else $t.=$s[$i];
}
return $t;
}
else
{
return $s;
}
}
function utf8_to_cp1251($s)
{
if ((mb_detect_encoding($s,'UTF-8,CP1251')) == "UTF-8")
{
for ($c=0;$c<strlen($s);$c++)
{
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$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;
}
else
{
return $s;
}
}
?>
PHP.mk документација
iconv функции
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
ref.iconv.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + преведен приказ
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
ref.iconv.php
iconv функции
Референца за `ref.iconv.php` со подобрена типографија и навигација.
iconv функции
Види Исто така
Види исто така Функции на GNU Recode.
Содржина
- iconv — Изврши преклопување на големи/мали букви на низа
- iconv_get_encoding — Преземање на внатрешни конфигурациски променливи на екстензијата iconv
- iconv_mime_decode — Декодира MIME поле за заглавје
- iconv_mime_decode_headers — Декодира повеќе MIME полиња за заглавје одеднаш
- iconv_mime_encode — Составува MIME поле за заглавје
- iconv_set_encoding — Поставува моментална поставка за конверзија на кодирање на карактери
- iconv_strlen — Враќа број на карактери во стринг
- iconv_strpos — Наоѓа позиција на првото појавување на игла во сено
- iconv_strrpos — Наоѓа последното појавување на игла во сено
- iconv_substr — Исечува дел од стринг
- ob_iconv_handler — Конвертира кодирање на карактери како ракувач на излезниот бафер
Белешки од корисници 2 забелешки
Мартин Петров ¶
пред 16 години
nod на mobi dot kz ¶
19 години пред
If you need convert string from Windows-1251 to 866. Some characters of 1251 haven't representation on DOS 866. For example, long dash -- chr(150) will be converted to 0, after that iconv finish his work and other charactes will be skiped. Problem characters range in win1251 (128-159,163,165-167,169,171-174,177-182,187-190).
Use this:
//$text - input text in windows-1251
//$cout - output text in 866 (cp866, dos ru ascii)
for($i=0;$i<strlen($text);$i++) {
$ord=ord($text[$i]);
if($ord>=192&&$ord<=239) $cout.=chr($ord-64);
elseif($ord>=240&&$ord<=255) $cout.=chr($ord-16);
elseif($ord==168) $cout.=chr(240);
elseif($ord==184) $cout.=chr(241);
elseif($ord==185) $cout.=chr(252);
elseif($ord==150||$ord==151) $cout.=chr(45);
elseif($ord==147||$ord==148||$ord==171||$ord==187) $cout.=chr(34);
elseif($ord>=128&&$ord<=190) $i=$i; //нет представления данному символу
else $cout.=chr($ord);
}