2012-12-17 11 views
5

W Javie można uzyskać wszystkie dostępne kodowania z tym kodem:Objective-C Jak wyświetlić wszystkie dostępne kodowania

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

Następnie można odczytać dowolny plik z dowolnej kodowania chcę:

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

Więc jest jakiś pomysł jak zaimplementować to w Objective-C

+2

Jeśli odważę się zrobić komentarz niezwiązany ściśle ze sobą (ponieważ JWWalker dostarczył już prawidłową odpowiedź); w kakao konwersja na ciąg jest aktem atomowym, który zaczyna się od kropli danych - nie ma analogii do ustawiania kodowania w strumieniu wejściowym. – Tommy

Odpowiedz

1

to MO ponownie lub mniej tłumaczenia twojego kodu z Javy. Musisz także wypełnić zmienną kodującą readingError. Oczywiście, centralnym punktem jest wiadomość statyczna avaiableStringEncodings.

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 while" nigdy się nie skończy 2> [link] (http://img96.imageshack.us/img96/3034/screenshot20121218at109.png) – Hizabr

+0

Przepraszam, edytowałem kod withoud Xcode. Przetestowałem teraz z IDE i jest w porządku. – giampaolo

+0

sprawdź ponownie odpowiedź, ponieważ z grubsza przetłumaczyć kod Java. W tablicy występują również wartości ujemne. Myślę, że pochodzą z CFStringEncodingExt.h. Filtruj wartości dodatnie, jeśli chcesz tylko od NSStringEncoding – giampaolo

3

const NSStringEncoding* encodingArray = [NSString availableStringEncodings];

Powiązane problemy