美文网首页
关于AFNetworking 3.0无法解析GB_2312编码的

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

作者: 简单的黑白 | 来源:发表于2016-11-29 15:26 被阅读0次

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

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

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

    相关文章

      网友评论

          本文标题:关于AFNetworking 3.0无法解析GB_2312编码的

          本文链接:https://www.haomeiwen.com/subject/dtoapttx.html