php json_encode亂碼的解決辦法:首先把數據庫編碼和頁面編碼都改為utf8;然后使用“json_encode”將php中的array數組轉為json字符串;最后用函數urlencode處理下即可。
php json_encode中文亂碼解決方法
相信很多人在使用ajax與后臺php頁面進行交互的時候都碰到過中文亂碼的問題。json作為一種輕量級的數據交換格式,備受親睞,但是用php 作為后臺交互,容易出現中文亂碼的問題。json和js一樣,對于客戶端的字符都是以utf8的形式進行處理的,也就是說,使用json作為提交和接收的 數據格式時字符都采用utf8編碼處理,當我們的頁面編碼和數據庫編碼不是采用utf8的時候,就極容易出現中文亂碼的問題。解決辦法自然是在用js或者 php處理json數據的時候都采用utf8的形式。
php5.2或以上的版本把json_encode作為內置函數來用,給網站制作者帶來了很大的方便,但是我們必須注意到json_encode只支持utf8編碼的字符,否則,中文亂碼或者空值就出現了。
解決辦法分為以下兩個步驟。
step1
保證在使用json處理的時候字符是以utf8編碼的。具體我們可以把數據庫編碼和頁面編碼都改為utf8。當然喜歡用gbk編碼的話,可以在進行json處理前,把字符轉為utf8形式。在php中有如下方法:
<?php $data="json中文"; $newdata=iconv("gb2312","utf-8//ignore",$data); echo $newdata; //ignore的意思是忽略轉換時的錯誤,如果沒有ignore參數,所有該字符后面的字符都不會被保存。 //或是("gb2312","utf-8",$data); ?>step2
后臺php頁面(頁面編碼為utf-8或者已經把字符轉為utf-8)使用json_encode將php中的array數組轉為json字符串。例如:
<?php $testjson=array('name'=>'中文字符串','value'=>'test'); echo json_encode($testjson); ?>查看輸出結果為:
{“name”:”\\\\u4e2d\\\\u6587\\\\u5b57\\\\u7b26\\\\u4e32″,”value”:”test”}可見即使用utf8編碼的字符,使用json_encode也出現了中文亂碼。解決辦法是在使用json_encode之前把字符用函數urlencode()處理一下,然后再json_encode,輸出結果的時候在用函數urldecode()轉回來。具體如下:
<?php $testjson=array('name'=>'中文字符串','value'=>'test'); //echo json_encode($testjson); foreach ( $testjson as $key => $value ) { $testjson[$key] = urlencode ( $value ); } echo urldecode ( json_encode ( $testjson ) ); ?>查看輸出結果為:
{“name”:”中文字符串”,”value”:”test”}到此,成功地輸出了中文字符。隨 意使用json_encode吧。這樣子在php后臺輸出的json字符串在前臺javascript中ajax接收后eval出來也不會出現中文亂碼, 因為js在處理json格式數據是也是以utf8的形式進行的,與php類似,故接收php頁面的json字符串不會出現問題。
更多相關文章,請訪問php中文網!
word公式怎么是灰的 word公式是灰的原因及解決方法怎么樣做網站信息安全保護程度自己買個云服務器可以做些什么網站人工刷流量和軟件刷流量哪個更安全國內云服務器怎么買才便宜Windows下MySQL安裝教程詳解電信云服務器租賃