0

我正在解析从网站获得的字符串,但根据我的下载方式得到不同的结果。这样它的工作原理:

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

按照这种方式它不起作用。我首先下载数据,将其输入NSMutableData *articleData,然后转换为 NSStringinitWithData: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 以确保连接加载已完成,您可以在其中调用数据方法。也尝试使用 NSASCIIStringEncoding 而不是 NSSymbolStringEncoding。

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