функция декодирования utf 8

beriv

Guest
функция декодирования utf 8

нижеприведенная функция не всегда декодирует поисковые запросы из utf 8

В чем причина, и как что можно сделать чтобы она декодировала все запросы?

PHP:
$tran = array(
"%A8"=>"%D0%81","%B8"=>"%D1%91","%C0"=>"%D0%90","%C1"=>"%D0%91","%C2"=>"%D0%92","%C3"=>"%D0%93","%C4"=>"%D0%94","%C5"=>"%D0%95","%C6"=>"%D0%96","%C7"=>"%D0%97","%C8"=>"%D0%98","%C9"=>"%D0%99","%CA"=>"%D0%9A","%CB"=>"%D0%9B","%CC"=>"%D0%9C","%CD"=>"%D0%9D","%CE"=>"%D0%9E","%CF"=>"%D0%9F","%D0"=>"%D0%A0","%D1"=>"%D0%A1","%D2"=>"%D0%A2","%D3"=>"%D0%A3","%D4"=>"%D0%A4","%D5"=>"%D0%A5","%D6"=>"%D0%A6","%D7"=>"%D0%A7","%D8"=>"%D0%A8","%D9"=>"%D0%A9","%DA"=>"%D0%AA","%DB"=>"%D0%AB","%DC"=>"%D0%AC","%DD"=>"%D0%AD","%DE"=>"%D0%AE","%DF"=>"%D0%AF","%E0"=>"%D0%B0","%E1"=>"%D0%B1","%E2"=>"%D0%B2","%E3"=>"%D0%B3","%E4"=>"%D0%B4","%E5"=>"%D0%B5","%E6"=>"%D0%B6","%E7"=>"%D0%B7","%E8"=>"%D0%B8","%E9"=>"%D0%B9","%EA"=>"%D0%BA","%EB"=>"%D0%BB","%EC"=>"%D0%BC","%ED"=>"%D0%BD","%EE"=>"%D0%BE","%EF"=>"%D0%BF","%F0"=>"%D1%80","%F1"=>"%D1%81","%F2"=>"%D1%82","%F3"=>"%D1%83","%F4"=>"%D1%84","%F5"=>"%D1%85","%F6"=>"%D1%86","%F7"=>"%D1%87","%F8"=>"%D1%88","%F9"=>"%D1%89","%FA"=>"%D1%8A","%FB"=>"%D1%8B","%FC"=>"%D1%8C","%FD"=>"%D1%8D","%FE"=>"%D1%8E","%FF"=>"%D1%8F",
);


$typo = array(
"%C2%A7"=>"§","%C2%A9"=>"©","%C2%AB"=>"«","%C2%AE"=>"®","%C2%B0"=>"°","%C2%B1"=>"±","%C2%BB"=>"»","%E2%80%93"=>"–","%E2%80%94"=>"—","%E2%80%9C"=>"“","%E2%80%9D"=>"”","%E2%80%9E"=>"„","%E2%80%A6"=>"…","%E2%84%96"=>"№","%E2%84%A2"=>"™","%C2%A4"=>"¤","%C2%B6"=>"¶","%C2%B7"=>"·","%E2%80%98"=>"‘","%E2%80%99"=>"’","%E2%80%A2"=>"•",
);
$rtran=array_flip($tran);

function utf_decode($string, $if = FALSE) {
GLOBAL $rtran, $typo;
   $string = strtr(urlencode($string),$rtran);
   $string = strtr($string,$typo);
   $string = urldecode($string);
return $string;
}
 

fixxxer

К.О.
Партнер клуба
Ув. администрация! Похоже, надо ввести в правила пункт, ограничивающий максимальную длину одной строки...
 

WebByte

Проходящий мимо
Я использую вот такую..
PHP:
function u8($win,$h,$t) { 
	global $w8; 
	$w8[chr($h).chr($t)] = $win; 
} 
$c1=chr(208); 
$c2=chr(209); 

u8("й",208,185); u8("ц",209,134); u8("у",209,131); 
u8("к",208,186); u8("е",208,181); u8("н",208,189); 
u8("г",208,179); u8("ш",209,136); u8("щ",209,137); 
u8("з",208,183); u8("х",209,133); u8("ъ",209,138); 
u8("ф",209,132); u8("ы",209,139); u8("в",208,178); 
u8("а",208,176); u8("п",208,191); u8("р",209,128); 
u8("о",208,190); u8("л",208,187); u8("д",208,180); 
u8("ж",208,182); u8("э",209,141); u8("я",209,143); 
u8("ч",209,135); u8("с",209,129); u8("м",208,188); 
u8("и",208,184); u8("т",209,130); u8("ь",209,140); 
u8("б",208,177); u8("ю",209,142); u8("Й",208,153); 
u8("Ц",208,166); u8("У",208,163); u8("К",208,154); 
u8("Е",208,149); u8("Н",208,157); u8("Г",208,147); 
u8("Ш",208,168); u8("Щ",208,169); u8("З",208,151); 
u8("Х",208,165); u8("Ъ",208,170); u8("Ф",208,164); 
u8("Ы",208,171); u8("В",208,146); u8("А",208,144); 
u8("П",208,159); u8("Р",208,160); u8("О",208,158); 
u8("Л",208,155); u8("Д",208,148); u8("Ж",208,150); 
u8("Э",208,173); u8("Я",208,175); u8("Ч",208,167); 
u8("С",208,161); u8("М",208,156); u8("И",208,152); 
u8("Т",208,162); u8("Ь",208,172); u8("Б",208,145); 
u8("Ю",208,174); u8("ё",209,145); u8("Ё",208,129); 

// обработка строки в UTH-8

function utf2win ($text){
	$text=urldecode($text);
	global $c1,$c2,$w8; 
	$u=false; 
	$temp=""; 
	for($i=0,$len=strlen($text);$i<$len;$i++){ 
		$c=substr($text,$i,1); 
	   	if($u){ 
	    	$c=$w8[$lc.$c]; 
	    	$temp.= isset($c)?$c:"?"; 
	    	$u=false; 
	   	}elseif($c==$c1 || $c==$c2){ 
	    	$u=true; 
	    	$lc=$c; 
	   	}
	    else $temp.= $c; 
 	}
	return $temp; 
}
 

fixxxer

К.О.
Партнер клуба
beriv, прочитай это - [m]utf8_decode[/m] - и никогда больше не кури эту траву.
 

beriv

Guest
WebByte, есть у меня такая функция, в реальности она работает еще хуже..


Автор оригинала: fixxxer
beriv, прочитай это - [m]utf8_decode[/m] - и никогда больше не кури эту траву.
ты думаешь если б я не попробовал все я бы тут задавал вопрос???
 

WebByte

Проходящий мимо
Я тестил ее на куче запросов с Гугла..
Результат меня устраивает - 100% переводит в русский текст
 

fixxxer

К.О.
Партнер клуба
Автор оригинала: beriv
WebByte, есть у меня такая функция, в реальности она работает еще хуже..

ты думаешь если б я не попробовал все я бы тут задавал вопрос???
Я думаю, что ты не пробовал читать комменты
 

beriv

Guest
Автор оригинала: WebByte
Я тестил ее на куче запросов с Гугла..
Результат меня устраивает - 100% переводит в русский текст
хм... а у меня почему-то не всех..


Автор оригинала: fixxxer
Я думаю, что ты не пробовал читать комменты
зря думаешь, читал я их и много, но ниче путного не нашел
 
Сверху