简体   繁体   English

Objective-C如何列出所有可用的编码

[英]Objective-C How to list all available encoding

In Java I can get all the available encodings with this code: 在Java中,我可以使用以下代码获得所有可用的编码:

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

Then, I can read any file with any encode I want: 然后,我可以读取任何我想要的编码文件:

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

So, is there any idea how to implement this in Objective-C 那么,有没有想法如何在Objective-C中实现它

const NSStringEncoding* encodingArray = [NSString availableStringEncodings];

This is more or less translation of your code from Java. 这或多或少是从Java转换代码。 You need also to complete the code checking readingError variable. 您还需要完成代码检查readingError变量。 Of course, central point is avaiableStringEncodings static message. 当然,中心点是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]; 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM