0

XCodeでhppleを使用してWebページを解析するときにエンコードに問題があります。

- (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

ここでは役に立たない、ドキュメントはそれが正しい方法ではないと指摘している。

エンコーディングを設定するには、同じチュートリアルで取得したMattGallagherによるXPathQuery.mを編集する必要があります。サイトは明らかにUTF-8でエンコードされていたため、変更は表示されましたが、何も機能しませんでした。

問題はサーバー側であり、管理者は古き良きプレーンXMLを提供してくれました:)

于 2013-01-28T20:32:31.020 に答える
0

NSDataロードしているURLの内容がUTF8ではなくASCIIであることをオブジェクトに伝えています。

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

どちらにする必要があります

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