Как преобразовать строку NSString в строку формата UTF-8 в iphone SDK? - PullRequest
9 голосов
/ 07 декабря 2009

В моем приложении локализация (английская, испанская, итальянская). Клиент прислал мне строковые файлы, но некоторые символы странные, как мне их исправить? я выяснил, что клиент использовал римскую кодировку Mac OS, как мне преобразовать это в utf-8. например Нюрнберг преобразуется в N√rnberg, когда клиент отправляет мне сообщение, и я хочу его переконвертировать.

Ответы [ 2 ]

19 голосов
/ 27 июля 2011

простой метод

   [yourNSStringObject UTF8String];
12 голосов
/ 07 декабря 2009

Если у вас есть файл свойств со всеми строками ... вы можете загрузить их и прочитать их любым из них (из Документации NSString ):

– initWithBytes:length:encoding:
– initWithBytesNoCopy:length:encoding:freeWhenDone:
– initWithCString:encoding:
– initWithUTF8String:

Вот список всех возможных кодировок

enum {
   NSASCIIStringEncoding = 1,
   NSNEXTSTEPStringEncoding = 2,
   NSJapaneseEUCStringEncoding = 3,
   NSUTF8StringEncoding = 4,                   <----- UTF8!
   NSISOLatin1StringEncoding = 5,
   NSSymbolStringEncoding = 6,
   NSNonLossyASCIIStringEncoding = 7,
   NSShiftJISStringEncoding = 8,
   NSISOLatin2StringEncoding = 9,
   NSUnicodeStringEncoding = 10,
   NSWindowsCP1251StringEncoding = 11,
   NSWindowsCP1252StringEncoding = 12,
   NSWindowsCP1253StringEncoding = 13,
   NSWindowsCP1254StringEncoding = 14,
   NSWindowsCP1250StringEncoding = 15,
   NSISO2022JPStringEncoding = 21,
   NSMacOSRomanStringEncoding = 30,
   NSUTF16StringEncoding = NSUnicodeStringEncoding,
   NSUTF16BigEndianStringEncoding = 0x90000100,
   NSUTF16LittleEndianStringEncoding = 0x94000100,
   NSUTF32StringEncoding = 0x8c000100,
   NSUTF32BigEndianStringEncoding = 0x98000100,
   NSUTF32LittleEndianStringEncoding = 0x9c000100,
   NSProprietaryStringEncoding = 65536
};
...