urldecode()解码:还原 URL 编码字符串。
示例:
<?php
header("Content-Type:text/htmlcharset=utf-8")
//对参数值进行编码
$parm=urlencode("演示php-mysql")
//拼接url
$url="decode.php?par=".$parm
?>
<a href="<?php echo $url?>">urlencode演示</a>
点击连接后地址栏中汉字被编码了:
http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql
------------------------------------------------------------------------
//decode.php
<?php
//获取参数值
$parValue=$_GET['par']
//解码
echo urldecode($parValue)
//运行结果:演示php-mysql
?>
解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:
//urlencode处理function json_array($obj) {
foreach($obj as $key => $value) {
if(is_array($obj[$key])) {
$obj[$key] = json_array($obj[$key])
}else{
$obj[$key] = urlencode($value)
}
}
return $obj
}
//urldecode解密转换为中文字符
function _json($obj) {
return urldecode(json_encode(json_array($obj)))
}
echo _json($json)//$json为你要输出的json数组
此处递归调用是为了处理多维数组······
没有加密,因为地址栏传明文参数不是太好,又不能使用不可解密的加密字符串,所以就转了另外一种格式传递,可以反转换的,urldecode函数就是转换url地址中的“%##”,你那个转出来是“th6sbehqla4c”,不用转gbk和utf8,和gbk utf8没有关系。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)