json_encode 中文變成null


今天在使用php時掉進了一個坑里,折騰了好久。
在使用json_encode時,如果數組中存在中文,該中文輸出為null。
 
示例代碼:
<?php
  $brand = array('id'=>'123456','name'=>'聯想');
  var_dump(json_encode($brand));
?>

輸出結果:

string(27) "{"id":"123456","name":null}"
“聯想”變成null了。
使用下面這個函數解決了此問題。
<?php
  function gbk2utf8($data){
    if(is_array($data)){
      return array_map('gbk2utf8', $data);
    }
    return iconv('gbk','utf-8',$data);
  }
?>
<?php
  $brand = array('id'=>'123456','name'=>'聯想');
  var_dump(json_encode(gbk2utf8($brand)));
?>

在json_encode之前做一下gbk2utf8轉碼,此時輸出正確結果。

string(37) "{"id":"123456","name":"\u8054\u60f3"}"

\u8054\u60f3 為“聯想”的unicode碼,瀏覽器會自動轉換成文字。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM