php数组使用json_encode函数中文被编码成null的原因和解决办法

时间:2023-03-08 17:39:11
php数组使用json_encode函数中文被编码成null的原因和解决办法

大写的囧,提客户处理问题,前端的APP一直在叽叽咂咂,说收到的值是null,弄了半天原来是这个问题,记录下吧

json格式在开发中用的十分广泛。在php中json_encode函数可以直接将数组转成 json格式,十分方便。但是有可能你在使用json_encode函数时,无奈的发现中文被编码成null了。原来json只支持转义utf-8编码格式的中文。php数组使用json_encode函数中文被编码成null的原因是转义gbk 或者别的编码时,中文被忽略了。一般出现在文档编码或者输出的内容编码是非UTF-8时,也就是说,GBK或者GB2312的中文,就会出现编码失败的现象。
php数组使用json_encode函数中文被编码成null的原因和解决办法,如果你的程序是采用utf-8编码,请确保文件保存为utf-8 无bom格式,如果你的程序是gbk的,可以先转成utf-8编码后在使用json_encode函数。

知道了这一点,以下的代码就好写了。这里给出一个Demo,备忘。

$array = array('title'=>iconv('gb2312','utf-8','这里是中文标题'),'body'=>'abcd...'); 
echo json_encode($array); 
编码以后的内容就成了这样:
{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."}