我正在尝试使用stringWithContentsOfURL:
从网络上获取HTML文件。我的问题是,有时它有效,但有时却没有。例如,我试过:
NSString *string = [NSString stringWithContentsOfURL:
[NSURL URLWithString:@"http://www.google.com/"]
encoding:encoding1
error:nil];
NSLog(@"html = %@",string);
这很好用,但是当我用@"http://www.youtube.com/"
替换URL时,我只得到“NULL”。有没有人知道发生了什么?是因为YouTube有某种保护吗?
答案 0 :(得分:4)
Google的主页使用ISO-8859-1编码(又名“Latin-1”或NSISOLatin1StringEncoding
)。 YouTube使用UTF-8(NSUTF8StringEncoding
),您使用encoding1
变量指定的编码必须与相关网页相匹配。
如果您只是想要网页并且不关心它的编码,请尝试以下方法:
NSStringEncoding encoding;
NSError *error;
NSString *string = [NSString stringWithContentsOfURL:
[NSURL URLWithString:@"http://www.google.com/"]
usedEncoding:&encoding
error:&error];
NSLog(@"html = %@",string);
此方法将告诉您编码是什么(通过将其写入encoding
变量),但您可以将其丢弃并专注于字符串。