Начало Новини Маркет Проекти Форум ИТ Работа Уроци Скриптове WiFi точки Още Вход


Конвертиране от CP1251 в UTF-8

От Mutatos / 23.04.2005 18:08
Размер на шрифта: A | A | A

Намерих няколко функции за превръщане от windows 1251 в UTF-8 в интернет и реших да ги пусна, може и на някой да са му от помощ. Изпробвайте ги и вижте, коя от всичките ще ви хареса най-много:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function win2utf
($s) {
  
for($i=0,$m=strlen($s);$i<$m;$i++) {
      
$c=ord($s[$i]);
      
if ($c>127) // convert only special chars
          
if    ($c==184)    $t.=chr(209).chr(209); // small io
          
elseif ($c==168)    $t.=chr(208).chr(129); // capital io
          
else              $t.=($c>239?chr(209):chr(208)).chr($c-48);
      
else $t.=$s[$i];
  
}
  
return $t;
}
?>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function win3utf
($s)    {
  
for($i=0, $m=strlen($s); $i<$m; $i++)    {
      
$c=ord($s[$i]);
      
if ($c<=127) {$t.=chr($c); continue; }
      
if ($c>=192 && $c<=207)    {$t.=chr(208).chr($c-48); continue; }
      
if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
      
if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
      
if ($c==184) { $t.=chr(209).chr(209); continue; };
  
if ($c==168) { $t.=chr(208).chr(129)continue; };
  
}
  
return $t;
}
?>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
       function win2utf
($s){
          
$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;
      
}
?>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function win3utf
($s)    {
  
for($i=0, $m=strlen($s); $i<$m; $i++)    {
      
$c=ord($s[$i]);
      
if ($c<=127) {$t.=chr($c); continue; }
      
if ($c>=192 && $c<=207)    {$t.=chr(208).chr($c-48); continue; }
      
if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
      
if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
      
if ($c==184) { $t.=chr(209).chr(209); continue; };
  
if ($c==168) { $t.=chr(208).chr(129)continue; };
  
}
  
return $t;
}
?>



И ако PHP е ви е компилирано с --with-iconv

CODE
1
2
3
<?php
echo iconv
('CP1251','UTF-8','some cyr string');
?>


Надявам се да са ви от помощ!

Статистика
Погледнат: пъти
Гласове: 1
Оценка:
Действие
 



myTech.bg © 2004 - 2011 | Контакти | За реклама