<?php
先unescapefunction unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4}) ¦.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
?>
先unescapefunction unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4}) ¦.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
?>
用 encodeURIComponent 函数编码,而不是用 escape 函数encodeURIComponent 函数是将传入的参数转换成utf-8编码以后再做URL编码,可以在服务器端自动完成URL解码。注意URL解码后的是utf-8编码的串,需要自行完成到所需编码的转换
escape 函数是将传入的参数转换成unicode编码以后再做URL编码,在服务器端一般不能全部完成URL解码。参数中的汉字将以%uhhhh的形式出现,处理上稍嫌麻烦