1,有些时候,需要写接口,传递一些中文值,那么JSON编码,会出现目前以下两种情况!
a.输出乱码
$testJSON=array('name'=>'中文字符串','value'=>'test');
echo json_encode($testJSON);
?>
输出结果:{“name”:”\u4e2d\u6587\u5b57\u7b26\u4e32″,”value”:”test”}
b.不输出乱码
使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用
函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:
$testJSON=array('name'=>'中文字符串','value'=>'test');
//echo json_encode($testJSON);
$testJSON=ReturnUrlencode($testJSON);
/**
* [ReturnUrlencode 用递归的方式来遍历所有的数组并且解析]
* @param [type] $arr [description]
*/
function ReturnUrlencode($arr){
foreach ($arr as $key => $value){
if(is_array($value)){
$arr[$key]=ReturnUrlencode($value);
}else{
$arr[$key]=urlencode($value);
}
}
return $arr;
}
print_r(urldecode ( json_encode ( $testJSON ) ) );
?>
输出结果:{“name”:”中文字符串”,”value”:”test”}
遍历递归算法!将数组中的所有值,urlencode!