例:
{"returnCode":"03","returnMessage":"\u7f3a\u5c11\u5fc5\u586b\u503c","data":[]}
但是此json字串在header上去加上utf8的編碼是可以正確解密出來的,但是現在我要使用log4php來寫log的時候會照成log會無法閱讀的問題。
google一下無法由這件事情的去找到解決方式,一層一層查詢發現問題在於json_encode()這個function,他會將文字強制轉換成utf8的編碼變成無法直接閱讀。
解決方式,在要json_encode前先做urlencode在做完後再urldecode回來。
此問題就衍伸另外一個問題
在php的 urlencode()這個function上面只能是string,所以需要透過自己建立的function來做轉換,程式碼如下:
function urlencode_array($array){
$out_array = array();
foreach($array as $key => $value){
if (is_array($value) ){
$out_array[urlencode($key)] = urlencode_array($value);
}else {
$out_array[urlencode($key)] = urlencode($value);
}
}
return $out_array;
}
特別注意的是要判斷$value是不是array,網路上有些方式是沒有這段的,若json的結構是很多層的將會在這邊跳出問題會解不出來。
大概是這樣,有其他問題在下面留言感謝