纠结的gb2312解码问题,终于曲线解决

来源:互联网 发布:路线规划软件 编辑:程序博客网 时间:2024/05/17 08:37

-(void)startRequest{    NSString *message = @"http://www.laiwangbiaoju.com";    NSURL *url = [NSURL URLWithString:[message URLEncodedString]];    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];    [request setDelegate:self];    [SVProgressHUD showWithStatus:@"加载中..."];    [request startAsynchronous];}-(int)indexByValue:(NSString *)str{    //使用NSMutableString类,它可以实现追加    NSMutableString *value = [[NSMutableString alloc] initWithFormat:@""];    NSString *colum2 = @"";    int j = 0;    //遍历出下标值    for(int i=1;i<[str length];i++){        NSString *colum1 = [str substringFromIndex:i];        [value appendString:colum2];        colum2 = [colum1 substringToIndex:1];        if([colum2 isEqualToString:@","]){            j = [value intValue];            break;          }      }    return j;  }-(NSString *)str:(NSString *)str value1:(NSString *)value1 value2:(NSString *)value2{    //i:左边匹配字符串在str中的下标    int i;    //j:右边匹配字符串在str1中的下标    int j;    //该类可以通过value1匹配字符串    NSRange range1 = [str rangeOfString:value1];    //判断range1是否匹配到字符串    if(range1.length>0){        //把其转换为NSString        NSString *result1 = NSStringFromRange(range1);        i = [self indexByValue:result1];        //原因:加上匹配字符串的长度从而获得正确的下标        i = i+[value1 length];    }    //通过下标,删除下标以前的字符    NSString *str1 = [str substringFromIndex:i];    NSRange range2 = [str1 rangeOfString:value2];    if(range2.length>0){        NSString *result2 = NSStringFromRange(range2);        j = [self indexByValue:result2];    }      NSString *str2 = [str1 substringToIndex:j];      return str2;  }-(void)requestFinished:(ASIHTTPRequest *)request{    NSString *data = [request responseString];    //NSLog(@"--------------------------------------------------------");    NSLog(@"--data---%@",data);    NSString* str = [self str:data value1:@"<p class=\"title\">" value2:@"</p>"];    NSLog(@"--------------------------------------------------------");    NSLog(@"--str---%@",str);    NSData *htmlDataUTF8 = [str dataUsingEncoding:NSUTF8StringEncoding];    //NSLog(@"htmlDataUTF8,%@",htmlDataUTF8);    NSLog(@"--------------------------------");    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8];    NSString *xpathQuery1 = [[NSString alloc] initWithFormat:@"//a"];    NSArray *elements1  = [xpathParser searchWithXPathQuery:xpathQuery1];    NSString *tmp;        for (TFHppleElement * element in elements1) {        tmp = [element text];        NSLog(@"tmp %@",tmp);        if(tmp != nil)            [key addObject:tmp];    }    [SVProgressHUD showSuccessWithStatus:@"加载完成"];}-(void)requestFailed:(ASIHTTPRequest *)request{    NSError *error = [request error];    NSLog(@"error %@",[error localizedDescription]);    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"注意" message:@"网络连接失败" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];    [alertView show];}- (void)viewDidLoad{    [super viewDidLoad];    key = [[NSMutableArray alloc] initWithCapacity:0];    [self startRequest];// Do any additional setup after loading the view, typically from a nib.}

直接贴代码:


0 0