Преобразовать имя кодировки в NSStringEncoding - PullRequest
12 голосов
/ 23 мая 2010

Учитывая строку кодировки, такую ​​как "utf-8", "iso-8859-1", "us-ascii" и т. Д., Есть ли какой-нибудь встроенный способ получить соответствующую кодировку NSStringEncoding в Какао?

Прямо сейчас я рассматриваю просто создание NSDictionary, содержащего канонизированную версию имени, сопоставленного с NSStringEncoding, и затем имеющего механизм поиска, который канонизирует ввод таким же образом. Но действительно ли нет способа получить NSUTF8StringEncoding при наличии строки "UTF-8" и т. Д.?

Ответы [ 3 ]

22 голосов
/ 23 мая 2010

Вы должны пройти CoreFoundation.

CFStringConvertIANACharSetNameToEncoding
CFStringConvertEncodingToNSStringEncoding

Сначала преобразует набор символов IANA в значение CFStringEncoding (которое не совпадает с NSStringEncoding), а затем преобразует CFStringEncoding в NSStringEncoding.

NSString *encodingString = @"utf-8"
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString));
2 голосов
/ 24 апреля 2013
NSStringEncoding utfEncoding = NSUTF8StringEncoding;
NSLog(@"%lu",utfEncoding);

NSString * utf8Name = @"UTF-8";
CFStringEncoding aEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)utf8Name);
utfEncoding = CFStringConvertEncodingToNSStringEncoding(aEncoding);
NSLog(@"%lu",utfEncoding);  
1 голос
/ 23 мая 2010

Я не думаю, что есть какой-то встроенный способ добиться этого.Я думаю, что вы предлагаете - создание словаря со значениями - это разумный способ пойти сюда.Не так много кодировок, поэтому это должно быть довольно тривиально и, вероятно, быстрее, чем пытаться найти встроенный способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...