api 调用返回的json中带有BOM头

我用同一个方法向api1发起请求返回的json字符串中带有BOM头导致json_decode,但是我用同一个方法向api2发起请求返回的就不带,可以正常用json_decode解析,那么api1到底是做了什么事情添加了BOM头??
去除的方法倒是找了很多,但是我想知道api1这个bom是怎么产生的

阅读 1.5k
评论 更新于 2018-01-27
    6 个回答
    maclxf
    • 116
    • 不管是把api1中的文件删了重新用编辑器写过,还是说用编辑器设置编码格式,最终我在调用api1时返回的结果还是有bom头,由于怕影响整站没有用 @dawnblog 提供的方法,但是依旧表示感谢。
    • 最后为了能处理api1和api2的返回值,我的做法是在接收端的反馈值做了trim_bom的处理。
    <?php
    function trim_bom(string $string) {
        if (!$string) {
            return $string;
        }
        $charset[1] = substr($string, 0, 1);
        $charset[2] = substr($string, 1, 1);
        $charset[3] = substr($string, 2, 1);
    
        if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
            $string = substr($string, 3);
        }
    
        return $string;
    }

    感谢各位帮助

    评论 赞赏 2018-01-30