PHP在使用json_encode格式转换问题

来源:互联网 发布:明代斗彩天字罐淘宝 编辑:程序博客网 时间:2024/06/06 04:40

PHP在使用json_encode()函数将数组对象转化为json格式字符串时有可能会存在转换之后值为空字符串。

原因分析:

因为json_encode()只支持UTF-8编码格式转换,如果遇到其他格式中文字符可能转化为乱码或者空字符串。

如果文件的编码格式设为其他格式而在转换时就会出错;

还有一种很难发现的的情况就是:

从数据库中读出的中文字段,然而并没不清楚或注意字符编码,在使用json_encode()转化为json字符串返回前端时很可能返回为空字符串,因为不清楚数据库字段编码格式,这种问题很难发现。

解决办法:

如果已知字符编码格式,则在转换前先对中文字符串转换编码格式:

iconv函数可以将一种已知的字符集文件转换成另一种已知的字符集文件。

iconv函数在php5中内置,GB字符集默认打开。

例:

 $str = '我爱CSDN';

 iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8

 iconv()有时也会出错

 iconv在转换字符”—”到gb2312时会出错,解决方法是在需要转成的编码后加 “//IGNORE”,也就是iconv函数  第二个参数后。如下:

 iconv("UTF-8", "GB2312//IGNORE", $data)

 ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。

原创粉丝点击