2009-12-07 20 views
9

Tengo localización en mi aplicación (inglés, español, italiano). El cliente me envió archivos de cadenas, pero algunos personajes son extraños, ¿cómo los corrijo? He descubierto que el cliente usó la codificación romana de Mac OS. ¿Cómo convierto esto a utf-8? por ejemplo Nürnberg se convierte en N√ºrnberg cuando el cliente me envía ahora quiero reconvertirlo.Cómo convertir un NSString a una cadena de formato UTF-8 en iphone sdk?

Respuesta

12

Si usted tiene un archivo de propiedades con todas las cuerdas ... puede cargarlos y leerlos con cualquiera de éstos (de NSString's Documentation):

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

Aquí está la lista de todas las codificaciones posibles

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

método simple

[yourNSStringObject UTF8String];