Преобразуйте имя набора символов к NSStringEncoding

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

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

12
задан d11wtq 23 May 2010 в 10:18
поделиться

2 ответа

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

CFStringConvertIANACharSetNameToEncoding
CFStringConvertEncodingToNSStringEncoding

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

NSString *encodingString = @"utf-8"
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString));
22
ответ дан 2 December 2019 в 06:08
поделиться

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

1
ответ дан 2 December 2019 в 06:08
поделиться