码迷,mamicode.com
首页 > 移动开发 > 详细

IOS 原生解析JSON 问题

时间:2016-05-13 21:55:26      阅读:578      评论:0      收藏:0      [点我收藏+]

标签:

服务器----WebService

返回的是JSON数据 IOS解析报错:

Error Domain=NSCocoaErrorDomain Code=3840 "Unable to convert data to string around character 56." UserInfo={NSDebugDescription=Unable to convert data to string around character 56.} 

Code = 3840 错误

通过我将JSON写成文档数据本地解析成功,但在IOS请求解析一直报这个错误

两次结果不同,于是将请求来的JSON数据data打印出来,发现网路请求的JSON数据字节流和本地数据解析打印的data字节流不一样(注:我TMD一个一个对比出来的,前些数据一样,后面就不同了。你也对对看看你自己的是不是也是这个错误

原因分析:WebService返回的是GB2312编码数据。IOS解析要转换为UTF8编码格式的数据!

解决方案:将GB2312格式的数据转换为UTF8的

转换代码:

-(NSString *) gb2312toutf8:(NSData *) data{

    NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); 

    NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];

    return retStr;

}  //现将编码格式转换为NSString

调用上面的方法:

NSString *dataStr = [self   gb2312toutf8:data];

再将dataStr转换为UTF8编码的数据

NSdata *data = [dataStr   dataUsingEncoding:NSUTF8StringEncoding];

好了,可以解析data数据了 

 

IOS 原生解析JSON 问题

标签:

原文地址:http://www.cnblogs.com/zhaoxh66/p/5491238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!