UTF-8 BOM EF BB BF 问题
原创 2018-08-09
今天遇到了一个让人抓狂的问题:服务API返回的JSON数据在微信小程序中一直无法自动解析,必须强制使用JSON.parse才可以正常解析出数据。
奇怪的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!
相关文章:
发表留言
您的电子邮箱地址不会被公开,必填项已用*标注。
留言板