iOS开发和服务器通讯遇到的编码问题

By | 2012 年 12 月 17 日

今天遇到一个bug,是服务器那边传过来的用UTF8编码之后的Json字符串,解UTF8之后,Json解析失败。

然后打印源字符串,其中会遇到很多的\200\213\123这样的内容导致解析失败。

其实这是假象。

在突发奇想将每个遇到的\替换成\\之后,问题解决了,解决了了···

但是再后来,发现这个做法有点过,就是其实还有一些正常的\不应该被变成\\,于是想到用正则表达式去匹配和替换。

用前向断言正则匹配\\(?=\d{3})去匹配,发现没有一个被匹配出来,而眼睁睁的看着打出的log里面确实是有\ddd\ddd\ddd这样的内容的,也确实就是这样的内容导致了json解析失败。

然后百思不得其解,千思也不得其解。终于忍了,自己写了一个字符串匹配替换,才发现问题的根源不在与\ddd\ddd\ddd,而在于\&,在debug窗口打出来的log和源字符串是不一样的····完全没有一个斜杠跟着3个数字的问题,出现的只有两种斜杠,\n\&。。。

后来吧\&替换成\\&就ok了。