json_decode解析json返回null,显示语法错误
接收了个json文件发现解析不了,原来是编码问题。
json_decode要求的字符串比较严格:
(1)使用UTF-8编码
(2)不能在最后元素有逗号
(3)不能使用单引号
(4)不能有\r,\t,如果有请替换
(5)含有BOM的文件
转换成utf-8
本人觉得php不以utf-8最为默认编码的人都是耍流氓行为,真让人头大。
$fileType = mb_detect_encoding($contents , array('UTF-8','GBK','LATIN1','BIG5')) ; if( $fileType != 'UTF-8'){ echo 111; $contents = mb_convert_encoding($contents ,'utf-8' , $fileType); }
去除BOM
总有些人会给你发一些有BOM的json格式,让你哭笑不得,居然还有人有BOM编辑器编写代码,真揪心,某些编辑器默认会加上BOM头,例如大名鼎鼎的window记事本。
$result = json_decode(trim($contents,chr(239).chr(187).chr(191)),true); print_r($result);
本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/517
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!