2010-05-23 8 views
12

Biorąc pod uwagę ciąg znaków zestawu znaków, taki jak "utf-8", "iso-8859-1", "us-ascii" itp., Istnieje jakiś wbudowany sposób uzyskania odpowiedniego NSStringEncoding w kakao ?Konwertuj nazwę zestawu znaków na NSStringEncoding

W tej chwili szukam właśnie zbudowania NSDictionary zawierającego kanoniczną wersję nazwy odwzorowanej na NSStringEncoding, a następnie mechanizm wyszukiwania, który kanonicznie przetwarza dane wejściowe w ten sam sposób. Ale czy naprawdę nie ma sposobu, aby NSUTF8StringEncoding otrzymał ciąg "UTF-8", itp?

Odpowiedz

21

Musisz przejść przez CoreFoundation.

CFStringConvertIANACharSetNameToEncoding 
CFStringConvertEncodingToNSStringEncoding 

konwertując IANA Zestaw znaków wartości CFStringEncoding (co nie jest taki sam jak NSStringEncoding), a następnie konwersję do CFStringEncoding NSStringEncoding.

NSString *encodingString = @"utf-8" 
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString)); 
+0

Dzięki, że wydaje się, że powinna załatwić sprawę. – d11wtq

1

Nie sądzę, że istnieje jakiś wbudowany sposób osiągnięcia tego. Myślę, że to, co sugerujesz - budowanie słownika z wartościami - jest rozsądnym sposobem, aby tu dotrzeć. Nie ma tak wielu kodowań, więc powinno to być dość trywialne i prawdopodobnie szybsze niż znalezienie wbudowanego sposobu na zrobienie tego.

2
NSStringEncoding utfEncoding = NSUTF8StringEncoding; 
NSLog(@"%lu",utfEncoding); 

NSString * utf8Name = @"UTF-8"; 
CFStringEncoding aEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)utf8Name); 
utfEncoding = CFStringConvertEncodingToNSStringEncoding(aEncoding); 
NSLog(@"%lu",utfEncoding); 
Powiązane problemy