最近更新至AFNetworking 3.0。发现AFNetworking 3.0 无法解析 GB_2312编码。
但是AFNetworking 2.3却没有出现这个问题。
NSLog打印出了response head之后。发现傻逼的后台使用的是GB_2312编码。而不是UTF8编码。
AFNetworking 3.0不支持。那就只能自己处理咯。我的方法是使用原生的NSURLSession。
//首先创建一个编码为CB_2312_Encoding的类型。由于NSStringEncoding没有这个类型。所以只能从CFStringEncoding转换过来
NSStringEncoding GB_2312_Encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)
//使用GB_2312_Encoding将获得的data转换成NSString
NSString * str = [[NSString alloc]initWithData:data encoding:GB_2312_Encoding];
//由于JSONObjectWithData只能解析UTF8的编码,所以还要使用UTF8编码的方式将NSString转换成NSData
NSData * utf8Data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSError * error = nil;
NSDictionary *tmpDict = [NSJSONSerialization JSONObjectWithData:utf8Data options:NSJSONReadingMutableLeaves error:&error];
那接下来就可以处理你想要的其他操作了。
暂时就想到这个方法。如果有大神有其他的解决方法。欢迎讨论分享。谢谢。
网友评论