PHP中对于AJAX请求乱码的处理函数
来源:http://www.7dit.com 作者:7dit 发布日期:2008-11-13 15:47:43 点击量:96
php如何直接解码javascript中的escape函数加码后的内容?
使用:
$result = uniDecode($str,'gb2312');
代码:
function uniDecode($str,$charcode="") {
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/","toUtf8",$str);
if (empty($charcode)) {
return $text;
} else {
return mb_convert_encoding($text, $charcode, 'utf-8');
}
}
function toUtf8($ar) {
$c = "";
foreach($ar as $val) {
$val = intval(substr($val,2),16);
if ($val < 0x7F){ // 0000-007F
$c .= chr($val);
} elseif ($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
} else { // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}
--------------------
code2:
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
使用:
$result = uniDecode($str,'gb2312');
代码:
function uniDecode($str,$charcode="") {
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/","toUtf8",$str);
if (empty($charcode)) {
return $text;
} else {
return mb_convert_encoding($text, $charcode, 'utf-8');
}
}
function toUtf8($ar) {
$c = "";
foreach($ar as $val) {
$val = intval(substr($val,2),16);
if ($val < 0x7F){ // 0000-007F
$c .= chr($val);
} elseif ($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
} else { // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}
--------------------
code2:
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
Copyright © 2005 奇点中文网--7dit.com
闽ICP备05001292号
闽ICP备05001292号
