URL下载导致不同的NSString

时间:2013-06-02 07:22:47

标签: ios nsstring

我正在解析我从网站获得的字符串,但根据我的下载方式得到不同的结果。 这种方式有效:

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

以下方式不起作用。我首先下载数据,将其输入NSMutableData *articleData然后转换为带initWithData:encoding:的NSString

- (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内容不一样?我需要使用不同的字符串编码吗?我尝试了很多但没有成功。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

是的,您需要使用不同的字符串编码。您可以尝试NSUTF8StringEncoding。这对我有用。 utf-8几乎是最流行的编码方式。