PHP中json返回的数据中带有bom头

时间:2024-04-08 21:39:38

做项目时碰到这么一个问题php后台返回的接口,前台无法识别,bejson也无法解析。

错误效果如下,解析时 json里面的字段前面有红点。

PHP中json返回的数据中带有bom头


请求的json格式如下;

PHP中json返回的数据中带有bom头

经过两天的挖坑发现是返回的内容里面,包含bom格式的编码。

解决方法去掉bom编码,(通过转化成utf8编码格式,从而达到去除utf-8-bom的作用)

实现思路是:(由于不知道data数组里面的哪一个标签前面出现了bom编码,因此递归data数组,去掉bom标签)

 public function checkBom($arr){
        foreach ($arr as $k => $v){
            if(is_array($v)){
                $arr[$k] = $this->checkBom($v);
            }else{
                $encode = mb_detect_encoding($v, array("ASCII","UTF-8","GB2312","GBK","BIG5"));   //获取编码,编码格式
                if($encode == 'UTF-8' ){
                    $arr[$k] = @iconv('UTF-8',"GBK",$arr[$k]);     //转换编码,去掉bom编码。
                    $arr[$k] = @iconv('GBK',"UTF-8",$arr[$k]);
                }
            }
        }
        return $arr;
    }