0

Web サイトから取得した文字列を解析していますが、ダウンロード方法によって結果が異なります。このように動作します:

NSString *tagiString = @"http://tagesanzeiger.ch";
NSURL *tagiURL = [NSURL URLWithString:tagiString];
NSError *error;
NSString *text =[NSString stringWithContentsOfURL:tagiURL
                                             encoding:NSASCIIStringEncoding
                                                error:&error];

次の方法では動作しません。最初にデータをダウンロードし、それを にフィードしてからNSMutableData *articleData、次のように NSString に変換しますinitWithData:encoding:

- (void)downloadWebsite
{
NSString *tagiString = @"http://tagesanzeiger.ch";
NSURL *websiteURL = [NSURL URLWithString:tagiString];
NSURLRequest *request = [NSURLRequest requestWithURL:websiteURL];
connection = [[NSURLConnection alloc] initWithRequest:request
                                             delegate:self
                                     startImmediately:YES];
}

- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data
{
    [articleData appendData:data];
}

- (NSString *)data
{    
NSString *text = [[NSString alloc] initWithData:articleData
                                       encoding:NSSymbolStringEncoding];      
return text;
}

結果のNSString *textコンテンツは両方のバージョンで同じではないようですか? 別の文字列エンコーディングを使用する必要がありますか? 私は成功せずに多くのことを試みました。

4

2 に答える 2

2

デリゲート メソッド connectionDidFinishLoading を実装して、データ メソッドを呼び出すことができる場所で接続の読み込みが完了していることを確認します。また、NSSymbolStringEncoding の代わりに NSASCIIStringEncoding を使用してみてください。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *text = [[NSString alloc] initWithData:self.articleData
                                           encoding:NSASCIIStringEncoding];
    //do whatever you need to do with the text
}
于 2013-06-02T10:13:43.097 に答える
0

はい、別の文字列エンコーディングを使用する必要があります。試すことができNSUTF8StringEncodingます。ここでそれは私のために働いています。そしてutf-8、ほぼ最も一般的なエンコード方法です。

于 2013-06-02T09:27:27.713 に答える