php中轉化為json時,字符串或數組編碼必須為utf-8編碼。
在網上找到了一個方法可以比較簡單的轉化,在此記錄:
利用var_export()和eval()方法
var_export():輸出或返回一個變量的字符串表示,和var_dump類似,
但是它返回的是合法的php代碼格式。將第二個參數設置為true時,
它將返回變量的表示。就是,第二個參數為true時,有返回值,不打印。為false時,和var_dump類似的輸出。
eval():把字符串按照php代碼來計算,該字符串必須是合法的php代碼,且必須以分號結尾。
如果沒有在代碼字符串中調用return語句,則返回null;如果代碼解析錯誤,返回false。
function array_iconv($arr, $in_charset = "gbk", $out_charset = "utf-8") { $ret = eval('return ' . iconv($in_charset, $out_charset, var_export($arr, true)) . ';'); return $ret; }
這樣輸出的數組就被轉化為了utf-8的編碼,即使是中文,也可以轉化為json了。
下面就可以使用json_encode將中文原樣輸出了:
JSON_UNESCAPED_UNICODE參數將中文原樣輸出,不轉化為Unicode編碼 json_encode($ret,JSON_UNESCAPED_UNICODE);