2013-01-22 67 views
0

當使用Xcode中的hpple解析網頁時,我遇到了編碼問題。XCode,iOS:使用hpple解析HTML編碼

- (void)loadTutorials { 

NSURL *tutorialsUrl = [NSURL URLWithString:@"http://qrz.si/members/s55db/"]; 
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl options:NSASCIIStringEncoding error:nil]; 


TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData]; 

NSString *tutorialsXpathQueryString = @"//td[@class='data']"; 
NSArray *tutorialsNodes = [tutorialsParsersearchWithXPathQuery:tutorialsXpathQueryString]; 


NSMutableArray *newTutorials = [[NSMutableArray alloc] initWithCapacity:0]; 
for (TFHppleElement *element in tutorialsNodes) { 
    Tutorial *tutorial = [[Tutorial alloc] init]; 
    [newTutorials addObject:tutorial]; 


    for (TFHppleElement *child in element.children) { 
     if ([child.tagName isEqualToString:@"img"]) { 
      // NSLog([child objectForKey:@"src"]); 
     } else if ([child.tagName isEqualToString:@"p"]) { 
      //NSLog([[child firstChild] content]); 
      tutorial.title = [[child firstChild] content]; 
     } 
    } 
} 

_objects = newTutorials; 
[self.tableView reloadData]; 
} 

頁面應該是UTF-8的源碼指出,但我得到更奇怪的字符。

如何強制更改數據編碼?任何幫助將不勝感激!

回答

1
options:NSASCIIStringEncoding 

沒用這裏,文件指出,這不是正確的路要走。

要設置編碼,必須編輯Matt Gallagher編寫的XPathQuery.m,這是我在同一個教程中獲得的。更改是可見的,但沒有任何工作,因爲該網站顯然是UTF-8編碼。

的問題是服務器端,管理員給了我美好的舊純XML :)

0

你告訴NSData對象正在加載的URL的內容是ASCII不UTF8:

NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl options:NSASCIIStringEncoding error:nil]; 

NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl options:NSUTF8StringEncoding error:nil]; 
+0

我與NSUTF8StringEncoding也嘗試過,但編碼不改變,有趣的字符都還在這裏:( – b4d

+0

我試圖複製整個table to [link](http://b4d.sablun.org/xpath.html),如果我解析這個鏈接,UTF-8編碼被正確讀取,但如果我解析原始網站UTF-8中斷。 – b4d