jsonUnexpected token,字符串编码不一致等的终极解决办法

来源:互联网 发布:js修改div id 编辑:程序博客网 时间:2024/06/05 07:53

最近一个正常运行了半年的系统,和第三方APP进行的通信程序,一直运行的好好的,下午突然就崩了~~~通过日志排查是解析过程中出错了,但是我的程序各个数据库交互环节以及数据强制转换的环节都做了判断,额,复制出来日志上的各种接收数据,通过“肉眼”扫描了N多次,没问题啊,甚至开始对自己编写的“无敌”程序产生怀疑了,呵呵。

但是在网上的有些json校验格式化工具上提示Unexpected token,虽然大部分工具还是能校验通过。但是还是把数据复制到我的eclipse下进行运行,果然发现转换json的环节出错了!!!但是在IDE下肉眼检查了每一个大括号,中括号,冒号,双引号,都没有发现问题!!!

后来部署到程序下面进行运行,发现不能正常转换,遂和同事WJW进行了沟通,然后两人又是半天进行排查,没个结果,思来想去我们都知道可能是编码的问题!但是谁也不知道如何下手,在出错的json校验网页,把第一层的左括号删除(直至第一个字符串),用半角左括号进行了替换,发现可以正常解析了!!!

  再后来问题排查出来了,和APP方进行了沟通,你们是不是修改程序的字符集编码了导致我方收到数据无法解析???对方经过排查,确实是他们有一个开发人员对代码进行过修改,然后他们听从我们的意见对该文件恢复为UTF-8编码,果然程序又可以正常运行了。

后来大神WJW编写了个字符串转byte的小程序完美的解释了这一现象,以后大家不用走弯路了,直接这么做就能告诉对方“你的字符串编码有问题”。

废话不多说了,直接上图!

先看看正常情况下的json字符串的Byte数组是啥样的?可以从下图中看见是123,34,101。。


然后我们再看看那个坑爹的字符串是啥样???通过下图我们看见前边明显的多余了3个奇怪的字节。。。

们可以把这图直接丢给对方的开发人员,他们会哑口无言!!!

这种方法适用于所有字符串编码不一致的场景。

0 0
原创粉丝点击