PHP json_encode 處理漢字爲空 服務端JSON漢字編碼
json
緣由是這個漢字是gbk編碼 , json只能處理utf-8的編碼 ,因此要先將數據轉碼數組
用Extjs接收PHP服務端返回的Json結果時,發現只要是漢字(從SQLServer取得)都是空字符,非常納悶。後來看 json_encode的文檔才知道,它只能編碼UTF-8的字符。這個問題就是返回的字符是GB2312,怎麼變爲UTF-8,而且最好是將整個數組進 行UTF-8的轉換。通過搜索有如下代碼完成:編碼
//處理數組編碼格式
code
function td_iconv($data, $charset_from, $charset_to) { if(strtolower($charset_from) == "gb2312") { $charset_from = "gbk"; } if(strtolower($charset_from) == strtolower($charset_to)) { return $data; } if(is_array($data)) { foreach($data as $k => $v) { if(is_array($v)) { $data[$k] = td_iconv($v,$charset_from,$charset_to); }else { $data[$k] = is_string($v) ? mb_convert_encoding($v, $charset_to, $charset_from) : $v; } } }else { if(is_string($data)) $data = mb_convert_encoding($data, $charset_to, $charset_from); } return $data; }