2009-12-07 12 views
9

Ho localizzazione nella mia app (inglese, spagnolo, italiano). Il client mi ha inviato file di stringhe ma alcuni caratteri sono strani come posso correggerli? ho capito che il client usava la codifica di Mac OS Roman come faccio a convertirlo in utf-8. ad esempio Nürnberg viene convertito in N√ºrnberg quando il cliente mi invia ora voglio riconvertirlo.Come convertire una stringa di formato NSString in UTF-8 in sdk per iphone?

risposta

12

Se si dispone di un file di proprietà con tutte le stringhe ... puoi caricarle in e leggerli con uno di questi (da NSString's Documentation):

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

ecco l'elenco di tutti i possibili codifiche

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 
}; 
19

metodo semplice

[yourNSStringObject UTF8String]; 
Problemi correlati