我正在解析我从网站获得的字符串,但根据我的下载方式得到不同的结果。 这种方式有效:
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
内容不一样?我需要使用不同的字符串编码吗?我尝试了很多但没有成功。
答案 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
几乎是最流行的编码方式。