奇怪的ef bb bf ef bb bf ef bb bf ef bb bf
同一服务上的API,仅一两个接口出现这种情况。初步判断可能是该接口返回数据有特殊字符,但即使该接口返回空JSON依然有问题。经过仔细对比发现,出问题接口服务器响应JSON数据的二进制信息中多了ef bb bf ef bb bf ef bb bf ef bb bf
这样的数据,那么这些数据是从哪里来的?
可恶的UTF-8 BOM
进过一番查询,发现原来是UTF-8 BOM惹得祸。代码文件,比如JSP,PHP等,如果文件采用的是UTF-8 BOM编码,如果未经处理,那么在经过渲染处理后,会把BOM信息直接返回给前端。所谓的BOM编码实际上就是Byte Order Mark,就是定义的网络字节序。由于是不可显示字符,所以出了问题难以发现。参考wiki:https://en.wikipedia.org/wiki/Byte_order_mark
去除UTF-8 BOM
解决办法就是去除BOM标记。使用Sublime Text等文本工具,选择Save with Encoding->UTF-8,去除BOM头部。
最后提醒:保存UTF8文件时,一定要注意不要使用BOM!
留言板