遇到XML-GB2312网页编码的处理方法

报的错误:encoding error : input conversion failed due to input error, bytes  I/O error : encoder error

1. 把请求的数据转化成data

2.XML文件的前40个字节 

    NSData * xmldata = [self.data subdataWithRange:NSMakeRange(0,40)];

    

3.以UTF-8编码进行解码

    NSString *xmlstr = [[NSString alloc] initWithData:xmldata encoding:NSUTF8StringEncoding];

    

    //搜索GB2312,如果找到,就把GB2312 改成 utf-8 (ps:替换字符串)

    if ([xmlstr rangeOfString:@"\"GB2312\"" options:NSCaseInsensitiveSearch].location != NSNotFound)

    {

        NSLog(@"遇到:GB2312 encoding founded.正在把GB2312改成utf-8");

        

        NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

        NSString *utf8str = [[NSString alloc] initWithData:self.data encoding:enc];

        utf8str = [utf8str stringByReplacingOccurrencesOfString:@"\"GB2312\"" withString:@"\"utf-8\"" options:NSCaseInsensitiveSearch range:NSMakeRange(0,40)];

//新的数据,可以进行正常解析

        NSData *newData = [utf8str dataUsingEncoding:NSUTF8StringEncoding];

   

    }

 

原文地址:http://www.linuxidc.com/Linux/2012-02/55254.htm

转载于:https://www.cnblogs.com/benxiaokang/p/5239734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值