将charset名称转换为NSStringEncoding

d11*_*wtq 12 cocoa encoding objective-c character-encoding

给定一个charset字符串,例如"utf-8","iso-8859-1","us-ascii"等,是否有任何内置方法可以在Cocoa中获取相应的NSStringEncoding?

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

dra*_*ard 22

你必须通过CoreFoundation.

CFStringConvertIANACharSetNameToEncoding
CFStringConvertEncodingToNSStringEncoding
Run Code Online (Sandbox Code Playgroud)

首先将IANA字符集转换为CFStringEncoding值(与NSStringEncoding不同),然后将CFStringEncoding转换为NSStringEncoding.

NSString *encodingString = @"utf-8"
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString));
Run Code Online (Sandbox Code Playgroud)