美文网首页
bom报头错误

bom报头错误

作者: 小5筒 | 来源:发表于2017-08-29 11:16 被阅读0次

android解析json出错:JSONException: Value of type java.lang.String cannot be converted to JSONObject。

很简单的一个json字符串: {"statu":"1","results":"true"},明显看着是没什么格式错误的,然后用各种json格式校验工具检测也都没什么问题,但程序里就一直报错。

google之后发现是BOM报头问题。服务器端是php,返回的接送数据'{'前有bom报头,java读的时候把报头直接当作文件内容读,然后就会出错。
一般是服务器端代码格式的问题

BOM报头又叫UTF-8签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行,一般的php代码如果用记事本等软件编辑保存过之后,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。(还不清楚为什么会在返回数据时候也自动加上了BOM报头)。

java、android客户端等可以通过代码过滤掉bom,然后再解析。
/** * 去除bom报头 */public static String formatString(String s) { if (s != null) { s = s.replaceAll("\ufeff", ""); } return s;}
这个bom问题真是困扰了很久。。。

服务器端过滤掉bom可以参考这篇文章:
PHP去除BOM头

相关文章

  • bom报头错误

    android解析json出错:JSONException: Value of type java.lang.St...

  • HTTP协议之:消息报头

    HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+“:”+空格+值 组成,消息报...

  • http 请求头_响应头

    http header 类型 : 通用报头,请求报头,响应报头和实体报头 总结: 请求 = 请求行 + 请求头 +...

  • Http报头Accept与Content-Type的区别

    1.Accept属于请求头, Content-Type属于实体头。 Http报头分为通用报头,请求报头,响应报头和...

  • HTTP的消息报头

    消息报头分为通用报头、请求报头、响应报头、实体报头等。消息头由键值对组成,每行一对,关键字和值用英文冒号“:”分隔...

  • 【计算机网络】

    1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...

  • MySQL技巧总结

    导入数据 中文乱码 关于第一列第一行数值变成 0 错误原因:文件以utf8-bom编码保存, 有bom的会比无bo...

  • java: illegal character: \65279

    myeclipse 工程用 idea 导入的时候,会报以下错误。 大概原因是因为在 window下面保存 BOM ...

  • 为产品定价的4种方式

    一、BOM定价 BOM即(Bill of Materials )物料清单,BOM定价指的是基于BOM价格的定价方式...

  • WINDOW对象说明

    首先Window是BOM中所有对象的核心,所以先理解BOM是什么吧 一、BOM 什么是BOM? 答:BOM是bro...

网友评论

      本文标题:bom报头错误

      本文链接:https://www.haomeiwen.com/subject/izkodxtx.html