关于AFNetworking 3.0无法解析GB_2312编码的问题

最近更新至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];

那接下来就可以处理你想要的其他操作了。


暂时就想到这个方法。如果有大神有其他的解决方法。欢迎讨论分享。谢谢。

推荐阅读更多精彩内容