PHP中json返回的數據中帶有bom頭

做項目時碰到這麼一個問題php後臺返回的接口,前臺無法識別,bejson也無法解析。

錯誤效果如下,解析時 json裏面的字段前面有紅點。



請求的json格式如下;

經過兩天的挖坑發現是返回的內容裏面,包含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;
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章