расшифровка строки
http://www.google.ru/search?q=%D0%B3%D1%83%D0%B3%D0%B5%D0%BB%D1%8C&ie=UTF-8&hl=ru&lr=
Помогите вычислить, каким образом кодируется параметр q, чтобы привести его к исходному виду. urldecode выдаёт гугель :(
Помогите вычислить, каким образом кодируется параметр q, чтобы привести его к исходному виду. urldecode выдаёт гугель :(
Цитата:
Originally posted by willwin
Выдает 'гугель' :) Функцию брал с php-мануала, так что за последствия не отвечаю.
Код:
<?php
echo utf8win1251(urldecode('%D0%B3%D1%83%D0%B3%D0%B5%D0%BB%D1%8C'));
function utf8win1251($s){
$out="";$c1="";$byte2=false;
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;}
?>
echo utf8win1251(urldecode('%D0%B3%D1%83%D0%B3%D0%B5%D0%BB%D1%8C'));
function utf8win1251($s){
$out="";$c1="";$byte2=false;
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;}
?>
Большое спасибо, ты мне очень помог! :)