折腾好几天了,因为是新手,之前解析utf8都没遇到问题。
用的是TFHpple,直接贴代码,请大虾帮忙瞧瞧,是哪里出问题了。谢谢!!!!!
直接读取retStr,这个是正常的。但是由于不是utf8编码的,不能直接用tfhpple解析,我现在是已经做了转换
了。解析还是乱码。导致tfhpple解析不到数据。
<pre name="code" class="html">-(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];
}
- (NSString *)URLEncodedString
{
NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)self,NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8));
return result;
}
-(void)requestFinished:(ASIHTTPRequest *)request
{
NSData *data = [request responseData];
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];
//NSString *retStr = [request responseString];
//NSString *utf8HtmlStr2 = [retStr stringByReplacingOccurrencesOfString:@""
// withString:@""];
NSString *utf8HtmlStr2 = [retStr URLEncodedString];
NSString *utf8HtmlStr = [utf8HtmlStr2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//NSString *utf8HtmlStr = [retStr stringByReplacingOccurrencesOfString:@""
// withString:@""];
//NSString *utf8HtmlStr2 = [utf8HtmlStr stringByReplacingOccurrencesOfString:@"\"GBK\"" withString:@"\"utf-8\"" options:NSCaseInsensitiveSearch range:NSMakeRange(0,40)];
//NSLog(@"retStr,%@",retStr);
NSLog(@"retStr,%@",retStr);//此处显示正常
NSLog(@"--------------------------------");
NSLog(@"utf8HtmlStr,%@",utf8HtmlStr);
NSLog(@"--------------------------------");//此处乱码
NSData *htmlDataUTF8 = [utf8HtmlStr dataUsingEncoding:NSUTF8StringEncoding];
//NSLog(@"htmlDataUTF8,%@",htmlDataUTF8);
NSLog(@"--------------------------------");
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8];
NSLog(@"numberOfRowsInSection");
NSString *xpathQuery1 = [[NSString alloc] initWithFormat:@"//p[@class='title']"];
NSArray *elements1 = [xpathParser searchWithXPathQuery:xpathQuery1];
NSString *tmp;
for (TFHppleElement * element in elements1) {
tmp = [element text];
NSLog(@"tmp %@",tmp);
tmp = [element content];
NSLog(@"tmp %@",tmp);
if(tmp != nil)
[key addObject:tmp];
}
[SVProgressHUD showSuccessWithStatus:@"加载完成"];
}
log信息分成两部分,
正常部分:
2014-06-10 00:45:27.331 laiwang3[1588:60b] key count = 0
2014-06-10 00:45:28.281 laiwang3[1588:60b] retStr,<!doctype html>
<html>
<head>
<meta charset="GBK" />
<title>本站新帖 - 来往镖局 - Powered by phpwind</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="generator" content="phpwind v9.0 20130107" />
<meta name="description" content="【来往镖局】中的最新帖子列表" />
此处省略若干log.......
显示乱码部分:
aiwang3[1588:60b] --------------------------------
2014-06-10 00:45:28.311 laiwang3[1588:60b] utf8HtmlStr,%253C!doctype%2520html%253E%250A%253Chtml%253E%250A%253Chead%253E%250A%253Cmeta%2520charset=%2522GBK%2522%2520/%253E%250A%253Ctitle%253E%25E6%259C%25AC%25E7%25AB%2599%25E6%2596%25B0%25E5%25B8%2596%2520-%2520%25E6%259D%25A5%25E5%25BE%2580%25E9%2595%2596%25E5%25B1%2580%2520-%2520Powered%2520by%2520phpwind%253C/title%253E%250A%253Cmeta%2520http-equiv=%2522X-UA-Compatible%2522%2520content=%2522chrome=1%2522%253E%250A%253Cmeta%2520name=%2522generator%2522%2520content=%2522phpwind%2520v9.0%252020130107%2522%2520/%253E%250A%253Cmeta%2520name=%2522description%2522%2520content=%2522%25E3%2580%2590%25E6%259D%25A5%25E5%25BE%2580%25E9%2595%2596%25E5%25B1%2580%25E3%2580%2591%25E4%25B8%25AD%25E7%259A%2584%25E6%259C%2580%25E6%2596%25B0%25E5%25B8%2596%25E5%25AD
------------------------------------------
拜托各位路过的大虾教教小弟。。