不同的NSString结果来自URL下载
我正在parsing一个string,我从网站上获得,但得到不同的结果,取决于我如何下载。 这样它的工作原理:
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 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
内容是不一样的? 我需要使用不同的string编码吗? 我尝试了许多没有成功。
实现委托方法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 }
是的,你需要使用不同的string编码。 你可以试试NSUTF8StringEncoding
。 这在为我工作。 而utf-8
几乎是最stream行的编码方式。