给定一个字符集字符串,例如“utf-8”,“iso-8859-1”,“us-ascii”等,是否有任何内置方法来获取 cocoa 中合适的NSStringEncoding?

现在,我正在考虑构建一个NSDictionary,其中包含映射到NSStringEncoding的名称的规范化版本,然后具有一种以相同方式规范化输入的查找机制。但是给定字符串“UTF-8”等,是否真的没有办法获取NSUTF8StringEncoding?

最佳答案

您必须通过CoreFoundation。

CFStringConvertIANACharSetNameToEncoding
CFStringConvertEncodingToNSStringEncoding

首先将IANA字符集转换为CFStringEncoding值(与NSStringEncoding不同),然后将CFStringEncoding转换为NSStringEncoding。
NSString *encodingString = @"utf-8"
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString));

09-07 13:27