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