0

在 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,但我得到了奇怪的字符。

如何强制更改数据的编码?任何帮助将不胜感激!

4

2 回答 2

1
options:NSASCIIStringEncoding

在这里没用,文档指出这不是正确的方法。

要设置编码,必须编辑 Matt Gallagher 的 XPathQuery.m,我在同一个教程中获得了该文件。更改是可见的,但没有任何效果,因为该站点显然是 UTF-8 编码的。

问题出在服务器端,管理员为我提供了很好的老式纯 XML :)

于 2013-01-28T20:32:31.020 回答
0

您告诉NSData对象您正在加载的 URL 的内容是 ASCII 而不是 UTF8:

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

应该是哪个

NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl options:NSUTF8StringEncoding error:nil];
于 2013-01-22T16:14:56.243 回答