在XCode中使用hpple解析网页时,我遇到了编码问题。
- (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,但是我得到了奇怪的字符。
如何强制更改数据的编码?任何帮助都将不胜感激!
发布于 2013-01-29 04:32:31
options:NSASCIIStringEncoding在这里是无用的,文档指出这不是正确的方法。
要设置编码,必须编辑Matt Gallagher的XPathQuery.m,这是我在同一教程中获得的。更改是可见的,但都不起作用,因为该网站显然是UTF-8编码的。
问题出在服务器端,管理员给我提供了很好的传统的纯XML :)
发布于 2013-01-23 00:14:56
您正在告诉NSData对象您正在加载的URL的内容是ASCII而不是UTF8:
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl options:NSASCIIStringEncoding error:nil];这应该是
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl options:NSUTF8StringEncoding error:nil];https://stackoverflow.com/questions/14462964
复制相似问题