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码,浏览器会自动转换成文字。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步