小編給大家分享一下php json中文亂碼怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,包括網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團(tuán)隊(duì)十多年專注互聯(lián)網(wǎng)開(kāi)發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹(shù)立了良好口碑。php json中文亂碼的解決辦法:首先將類中的中文字段進(jìn)行url編碼;然后再將對(duì)象進(jìn)行json編碼;最后進(jìn)行url解碼即可解決亂碼問(wèn)題。
PHP中json中文亂碼問(wèn)題解決
問(wèn)題:
眾所周知使用json_encode可以方便快捷地將對(duì)象進(jìn)行json編碼,但是如果對(duì)象的屬性中存在著中文,問(wèn)題也就隨之而來(lái)了。
json_encode會(huì)將中文轉(zhuǎn)換為unicode編碼,例如:'我'經(jīng)過(guò)json_encode處理后變?yōu)?#39;\\u6211',最終的json中中文部分被替換為unicode編碼。我們要解決的就是將對(duì)象轉(zhuǎn)換為json并保證對(duì)象內(nèi)部的中文在json中仍然是以正常的中文出現(xiàn),現(xiàn)在看來(lái)只使用json_encode是不能達(dá)到目的的。
解決方法:先將類中的中文字段進(jìn)行url編碼(urlencode),然后再對(duì)對(duì)象進(jìn)行json編碼(jsonencode),最后url解碼(urldecode)json,即最終的json,里面的中文依舊是那個(gè)中文,完成我們想要的效果
<meta charset="utf-8"> <?php //1.將數(shù)組、對(duì)象轉(zhuǎn)為json格式(數(shù)組、對(duì)象都不包含中午) $arr=array('a'=>'a','b'=>'b'); //string '{"a":"a","b":"b"}' (length=17) var_dump(json_encode($arr)); class Person{ private $money=0; public $name=null; protected $lover=null; public function __construct($name,$money,$lover){ $this->name=$name; $this->money=$money; $this->lover=$lover; } public function getName(){ return $this->name; } protected function getLover(){ return $this->love; } private function getMoney(){ $this->money; } } $zhangsan=new Person('zhagnsan','9999999','beautiful grils'); //只會(huì)將類中public屬性轉(zhuǎn)為json格式 var_dump(json_encode($zhangsan)); //string '{"name":"zhangsan"}' (length=19) //對(duì)于數(shù)組或是對(duì)象包含中文,json_encode會(huì)將中文轉(zhuǎn)換為unicode編碼, //解決方法:先將類或是數(shù)組中的中文字段進(jìn)行url編碼(urlencode),然后再對(duì)對(duì)象或是數(shù)組進(jìn)行json編碼(jsonencode),最后url解碼(urldecode)json,即最終的json $arr=array('ename'=>'dqs','cname'=>'你猜啊'); var_dump(json_encode($arr)); //中文,出現(xiàn)亂碼,string '{"ename":"dqs","cname":"\\u4f60\\u731c\\u554a"}' (length=44) $arr['cname']=urlencode($arr['cname']); $arr_json=urldecode(json_encode($arr)); var_dump($arr_json); //string '{"ename":"dqs","cname":"你猜啊"}' (length=35) //3.補(bǔ)充知識(shí),查看字符編碼方式以及轉(zhuǎn)碼 $name="dsq,你好啊"; //iconv_get_encoding()獲取當(dāng)前頁(yè)面的編碼信息 var_dump(mb_detect_encoding($name)); //UTF-8 $name=iconv("UTF-8","GB2312//IGNORE",$name); var_dump(mb_detect_encoding($name)); //UTF-8 //思考,為什么將utf-8編碼轉(zhuǎn)為gb2312后還是utf-8呢? 查看字符串編碼mb_detect_encoding //echo mb_detect_encoding($arr['cname']); //$newData=iconv("GB2312","UTF-8//IGNORE",$data);
以上是php json中文亂碼怎么辦的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁(yè)標(biāo)題:phpjson中文亂碼怎么辦-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://aaarwkj.com/article36/iessg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、營(yíng)銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、商城網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容