gpt4 book ai didi

objective-c - 异步相当于 NSString 的 -initWithContentsOfURL :usedEncoding:error:

转载 作者:行者123 更新时间:2023-12-03 17:07:33 25 4
gpt4 key购买 nike

NSStringinitWithContentsOfURL:usedEncoding:error: 方法会自动检测正确的字符串编码,以解码指定 URL 中的数据。但是,此方法是同步的,我尝试使用 NSURLConnection 异步执行相同的任务。

我遇到的问题是,当我从 URL 获取 NSData 时,没有方法可以在不知道编码的情况下轻松将该数据转换为 NSString 。当我提取 HTML 文档时,URL 可以是互联网上的任何网站,编码可以是各种各样的东西。

有没有一种方法可以发现编码,基本上完全执行 initWithContentsOfURL:usedEncoding:error: 的作用?

最佳答案

以下是您的 connection:didReceiveResponse: 委托(delegate)方法的外观:

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSStringEncoding nsEncoding = 0;
NSString *textEncodingName = [response textEncodingName];
if (textEncodingName)
{
CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)textEncodingName);
if (cfEncoding != kCFStringEncodingInvalidId)
{
nsEncoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding);
}
}

if (nsEncoding != 0)
{
// Great, you have your encoding
}
else
{
// You are on your own, you have to apply a heuristic
}
}

另外,我建议您阅读Friday Q&A 2010-02-19: Character Encodings作者:迈克·阿什。

关于objective-c - 异步相当于 NSString 的 -initWithContentsOfURL :usedEncoding:error:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com