2009-12-07 2 views
9

Ich habe Lokalisierung in meiner App (Englisch, Spanisch, Italienisch). Der Client schickte mir Zeichenketten Dateien, aber einige Zeichen sind seltsam, wie korrigiere ich sie? Ich habe herausgefunden, dass der Client Mac OS Roman Codierung verwendet, wie kann ich dies in UTF-8 konvertieren. zum beispiel Nürnberg wird in Nürnberg umgerechnet, wenn Kunde mich jetzt sende ich will es zurückkonvertieren.Wie konvertiert man einen NSString in UTF-8 Format String in iPhone SDK?

Antwort

12

Wenn Sie eine Objekte mit allen Saiten-Datei haben ... Sie können sie in laden und sie mit diesen kommt (von NSString's Documentation) lesen:

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

Hier ist die Liste aller möglichen Kodierungen

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

einfache Methode

[yourNSStringObject UTF8String];