php json_encode后乱码,php json_encode 中文乱码的解决方法
json_encode對中文的處理一直是有問題的,
1.不能處理GB編碼,所有的GB編碼都會替換成空字符.
2.utf8編碼的中文被編碼成unicode編碼,相當于javascript的escape函數處理的結果.為了能正確使用json,
方法一:將數據轉成JSON之后,將unicode編碼的中文替換成utf8編碼的中文
首先我們就應該在編碼上采用utf8編碼,然后再對json_encode的返回結果稍加處理就可以得到正確的結果了。
$code = json_encode($str); //---這時返回的就是unicode編碼的中文
preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code); //---這時返回的就是utf8編碼的中文
方法二:當數據還是數組的時候,將其中類型為字符串的數據進行 urlencode,然后將結果轉成JSON,最后將JSON字符串進行urldecode
function arrayRecursive(&$array){
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key]);//如果是數組就進行遞歸操作
} else {
if(is_string($value)){
$temp1= addslashes($value);
$array[$key]= urlencode($temp1);//如果是字符串就urlencode
}else{
$array[$key] = $value;
}
}
}
}
function JSON($result) {
$array=$result;
arrayRecursive($array);//先將類型為字符串的數據進行 urlencode
$json = json_encode($array);//再將數組轉成JSON
return urldecode($json);//最后將JSON字符串進行urldecode
}
echo JSON($data);//這里的$data是一個數組(可以是多維數組)
總結
以上是生活随笔為你收集整理的php json_encode后乱码,php json_encode 中文乱码的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redhat linux下安装oracl
- 下一篇: oracle导入与导出,oracle导入