2012-12-17 9 views
5

In Java ich alle verfügbaren Kodierungen mit diesem Code erhalten können:Objective-C Wie alle verfügbaren zur Liste kodiert

SortedMap<String, Charset> availableCharsets = Charset.availableCharsets(); 
Vector allEncodes = new Vector(); 
for (Map.Entry<String, Charset> entry : availableCharsets.entrySet()) { 
      allEncodes.add(entry.getKey()); 
} 

Dann kann ich jede Datei mit einem beliebigen kodieren lesen Ich möchte:

Reader in = new InputStreamReader(new FileInputStream(aPath), allEncodes.get(0)); 

Also, gibt es eine Idee, wie dies in diesem Objective-C

+2

Wenn ich es wage, einen nicht strikt nicht verwandten Kommentar zu machen (da JWWalker bereits geliefert hat, was ich denke, ist die richtige Antwort); In Cocoa ist die Umwandlung in eine Zeichenfolge ein atomarer Vorgang, der mit einem Datenblob beginnt - es gibt kein Analogon zum Festlegen einer Codierung für einen eingehenden Datenstrom. – Tommy

Antwort

1

zu implementieren ist mo Re oder weniger Übersetzung Ihres Codes von Java. Sie müssen auch den Code überprüfen readingError Variable. Natürlich ist der zentrale Punkt avaiableStringEncodings statische Nachricht.

NSMutableArray *arrayOfEncodings = [[NSMutableArray alloc] init]; 

    const NSStringEncoding *encodings = [NSString availableStringEncodings]; 
    while (*encodings != 0){ 
    [arrayOfEncodings addObject:[NSNumber numberWithInt:*encodings]]; 
    encodings++; 
    } 

    NSError *readingError = nil; 
    NSString yourPath = @"some path you want"; 
    NSData *data = [[NSData alloc] initWithContentsOfFile:yourPath options:NSDataReadingUncached error:&readingError]; 

    NSStringEncoding firstEncoding = (NSStringEncoding) [((NSNumber *) [arrayOfEncodings objectAtIndex:0]) intValue]; 

    NSString *myString = [[NSString alloc] initWithData:data encoding:firstEncoding]; 
+0

1> "while loop" wird niemals enden 2> [link] (http://img96.imageshack.us/img96/3034/screenshot20121218at109.png) – Hizabr

+0

Entschuldigung, ich habe Code ohne Xcode bearbeitet. Ich habe jetzt mit IDE getestet und es ist in Ordnung. – giampaolo

+0

überprüfen Sie erneut Antwort, da ich Java-Code grob übersetzt. Im Array sind auch negative Werte vorhanden. Ich denke das kommt von CFStringEncodingExt.h. Positive Werte filtern, wenn Sie nur eine von NSStringEncoding möchten – giampaolo

3

const NSStringEncoding* encodingArray = [NSString availableStringEncodings];

Verwandte Themen