//gbk編碼 $gbk = '中文'; echo json_encode($gbk);//null
原因:因為json_encode只支持utf-8的編碼,對于英文沒有什么影響,但是對于中文就會有問題了。
解決辦法:
$gbk = urlencode('中文'); echo urldecode(json_encode($gbk));//中文
并不是非得用urlencode編碼,也可以用別的編碼,例如base64_encode等等,大家可以多嘗試一下
2、ajax調(diào)用后端gbk編碼接口會出現(xiàn)亂碼
原因:因為Ajax返回的數(shù)據(jù)默認(rèn)的字符編碼是utf-8
解決辦法: 在后端,如php加上
header('Content-Type:text/html;charset=utf-8');//如果是json最好用Content-Type: application/json或text/plain
3、utf8編碼的json_encode也會被編碼,變成不可讀的, 類似”\u***”的格式,Ajax調(diào)用也同樣的問題
原因:json_encode對中文支持不好
解決辦法:(1)可以參考第一種方法;(2)從PHP5.4開始,在json_encode中有了第二個參數(shù),可以通過傳入JSON_UNESCAPED_UNICODE解決,例如
echo json_encode('中文',JSON_UNESCAPED_UNICODE);//中文
推薦:采用UTF8編碼,php盡量升級到5.4以上的版本
PS:如果有任何問題,歡迎提出