猿问
下载APP

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

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

白衣染霜花
浏览 534回答 3
3回答

精慕门1444504

编辑API1用 Notepad++Notepad++ ->格式,选中叫 以UTF-8 无BOM格式编码->保存单文件上面解决,批量可以用命令。采纳并解决也不给分,一个preg_replace写好了,还自己根据我的方案写个假方法不打算给分,下次不回了。看评论[GREP]find . -type f -exec sed '1s/^\xEF\xBB\xBF//' -i {} \;grep -rl $'\xEF\xBB\xBF' .[PERL]perl -e 's/\xef\xbb\xbf//;' -pi~ file.js[PHP]function removeBOM ($contents) {    $packed = pack("CCC",0xef,0xbb,0xbf);    return preg_replace('/'.$packed.'/','',$contents);}[签名:98sky.com]

DIEA

https://github.com/emrahgundu...github上bom头清除的一个脚本,放在网站根目录下,访问就可以批量清除掉所有的bom头

慕姐5112350

不管是把api1中的文件删了重新用编辑器写过,还是说用编辑器设置编码格式,最终我在调用api1时返回的结果还是有bom头最后为了能处理api1和api2的返回值,我的做法是在接收端的反馈值做了trim_bom的处理。<?phpfunction trim_bom(string $string) {&nbsp; &nbsp; if (!$string) {&nbsp; &nbsp; &nbsp; &nbsp; return $string;&nbsp; &nbsp; }&nbsp; &nbsp; $charset[1] = substr($string, 0, 1);&nbsp; &nbsp; $charset[2] = substr($string, 1, 1);&nbsp; &nbsp; $charset[3] = substr($string, 2, 1);&nbsp; &nbsp; if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {&nbsp; &nbsp; &nbsp; &nbsp; $string = substr($string, 3);&nbsp; &nbsp; }&nbsp; &nbsp; return $string;}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答