我们知道如果在链接中填入中文参数,那么当编码不一致时会出现乱码(比如链接所在的网页是gb2312,而链接链向的网页编码是utf8)因此我们应该对中文数据进行编码,这里写了一个函数,专门来处理链接中的中文...
function addLink(self , url , json){
url += "?"; //网址后首先是?
var flag = true; //标志是第一个参数吗。如果是则不用添加&
for(var j in json){ //遍历json找到需要传递的参数
if(flag){
url += j+"="+escape(json[j]);
flag = false;
}
else
url += "&"+j+"="+escape(json[j]);
}
self.href = url; //转移到指定网址
}
之后我们可以在链接中这样调用函数
<a onclick="addLink(this , 'a.php' , {'name':'han' , 'zh':'韩'});">链接的文字</a>
另外php接收被js escape之后的中文时必须反解码,这里找到了一个函数用来解码escape后的字符串
function php_js_unescape($url)
{
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord)
{
$dec = hexdec($uniord);
$utf = '';
if ($dec < 128)
{
$utf = chr($dec);
}
else if ($dec < 2048)
{
$utf = chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
else
{
$utf = chr(224 + (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
$url = str_replace('%u'.$uniord, $utf, $url);
}
return urldecode($url);
}
浙公网安备 33010602011771号