php小红点,PHP出现BOM情况(\ufeff)小红点

一、出现问题

1、今天在接中转接口时突然发现返回的数据多了三个字符,使用在线JSON校验工具时发现数据前面多了个小红点

78aaae5a214a

2、刚以为是本地代码CURL的问题,后来经过检测发现不是本地代码的问题,使用在线HTTP请求发现依旧会携带\ufeff(小红点)问题,初步排除是本地代码问题,只可能是接口端问题。

3、经过百度查询,发现有很多同僚遇到相同的问题,主要是引入的文件或请求接口的文件编码格式是UTF-8带有BOM的文件,因为使用的TP框架,也不知道具体是哪个文件问题。

二、解决办法

1、治标不治本:

使用trim()方法将BOM清除

2、治本

找到带有BOM的文件,用notepad++工具转换成不带有BOM的文件

在linux下可以通过下面两条命令查找带BOM格式文件和将文件转换成无BOM格式:# 在项目根目录,查找项目中带BOM格式文件并显示

grep -r -I -l $'^\xEF\xBB\xBF'.

/# 在存在BOM格式文件的目录,将目录下所有文件去除BOM头

# (注意:不能对图片进行此操作,否则会导致图片打不开)

find . -typef -execsed -i's/\xEF\xBB\xBF//'{} \;

-----------------------------------------------------------------------------------------------------------------------------------------

我的刚解决了,原来是在配置文件中有两个文件的编码是UTF-8带有BOM的,使用notepad++进行文件转编码后,咦,问题解决了。哈哈哈,高兴,各位如果也发生这种事情,先去看看配置文件是不是也有带有BOM的文件。

三、附录

1、PHP在5.2之后默认的都是不带有BOM的文件,在使用json_decode()的时候如果是返回带有BOM的数据,json_deconde()将会返回null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值