解決php中對象使用json_encode轉換後中文被編碼為unicode_PHP教程

來源:互聯網
上載者:User
現象:眾所周知使用json_encode可以方便快捷地將對象進行json編碼,但是如果對象的屬性中存在著中文,問題也就隨之而來了。json_encode會將中文轉換為unicode編碼,例如:'胥'經過json_encode處理後變為'\u80e5',最終的json中中文部分被替換為unicode編碼。我們要解決的就是將對象轉換為json並保證對象內部的中文在json中仍然是以正常的中文出現,現在看來只使用json_encode是不能達到目的的。

我的解決方案:先將類中的中文欄位進行url編碼(urlencode),然後再對對象進行json編碼(jsonencode),最後url解碼(urldecode)json,即最終的json,裡面的中文依舊是那個中文!

測試代碼如下:

 1  2 class myClass {
3 public $item1 = 1;
4 public $item2 = '中文';
5
6 function to_json() {
7 //url編碼,避免json_encode將中文轉為unicode
8 $this->item2 = urlencode($this->item2);
9 $str_json = json_encode($this);
10 //url解碼,轉完json後將各屬性返回,確保對象屬性不變
11 $this->item2 = urldecode($this->item2);
12 return urldecode($str_json);
13 }
14 }
15
16 $c = new myClass();
17 echo json_encode($c);
18 echo '
';
19 echo $c->to_json();
20 echo '
';
21 echo json_encode($c);
22 echo '
';
23 echo json_encode('胥');
24 ?>

程式輸出結果:

{"item1":1,"item2":"\u4e2d\u6587"}
{"item1":1,"item2":"中文"}
{"item1":1,"item2":"\u4e2d\u6587"}
"\u80e5"

希望本文起到拋磚引玉的作用,收集大家更好的解決方案……!

http://www.bkjia.com/PHPjc/363894.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/363894.htmlTechArticle現象:眾所周知使用json_encode可以方便快捷地將對象進行json編碼,但是如果對象的屬性中存在著中文,問題也就隨之而來了。json_encode會將中...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.