【iOS】如何判断文本文件的字符编码格式
总体思路:
遍历所有的字符编码,能正确读取输出转换的就是文本文件的编码格式。
代码如下:
- //
- // main.m
- // 检测文本字符编码格式的小技巧
- //
- // Created by 杜子兮 (duzixi) on 14-6-21.
- // Copyright (c) 2014年 lanou3g.com All rights reserved.
- //
- #import <Foundation/Foundation.h>
- int main(int argc, const charchar * argv[])
- {
- @autoreleasepool {
- NSArray *arrEncoding = @[@(NSASCIIStringEncoding),
- @(NSNEXTSTEPStringEncoding),
- @(NSJapaneseEUCStringEncoding),
- @(NSUTF8StringEncoding),
- @(NSISOLatin1StringEncoding),
- @(NSSymbolStringEncoding),
- @(NSNonLossyASCIIStringEncoding),
- @(NSShiftJISStringEncoding),
- @(NSISOLatin2StringEncoding),
- @(NSUnicodeStringEncoding),
- @(NSWindowsCP1251StringEncoding),
- @(NSWindowsCP1252StringEncoding),
- @(NSWindowsCP1253StringEncoding),
- @(NSWindowsCP1254StringEncoding),
- @(NSWindowsCP1250StringEncoding),
- @(NSISO2022JPStringEncoding),
- @(NSMacOSRomanStringEncoding),
- @(NSUTF16StringEncoding),
- @(NSUTF16BigEndianStringEncoding),
- @(NSUTF16LittleEndianStringEncoding),
- @(NSUTF32StringEncoding),
- @(NSUTF32BigEndianStringEncoding),
- @(NSUTF32LittleEndianStringEncoding)
- ];
- NSArray *arrEncodingName = @[@"NSASCIIStringEncoding",
- @"NSNEXTSTEPStringEncoding",
- @"NSJapaneseEUCStringEncoding",
- @"NSUTF8StringEncoding",
- @"NSISOLatin1StringEncoding",
- @"NSSymbolStringEncoding",
- @"NSNonLossyASCIIStringEncoding",
- @"NSShiftJISStringEncoding",
- @"NSISOLatin2StringEncoding",
- @"NSUnicodeStringEncoding",
- @"NSWindowsCP1251StringEncoding",
- @"NSWindowsCP1252StringEncoding",
- @"NSWindowsCP1253StringEncoding",
- @"NSWindowsCP1254StringEncoding",
- @"NSWindowsCP1250StringEncoding",
- @"NSISO2022JPStringEncoding",
- @"NSMacOSRomanStringEncoding",
- @"NSUTF16StringEncoding",
- @"NSUTF16BigEndianStringEncoding",
- @"NSUTF16LittleEndianStringEncoding",
- @"NSUTF32StringEncoding",
- @"NSUTF32BigEndianStringEncoding",
- @"NSUTF32LittleEndianStringEncoding"
- ];
- for (int i = 0 ; i < [arrEncoding count]; i++) {
- unsigned long encodingCode = [arrEncoding[i] unsignedLongValue];
- NSLog(@"(%@)", arrEncodingName[i]);
- NSError *error = nil;
- NSString *filePath = @"/Users/dlios1/Desktop/event.xml"; // <---这里是要查看的文件路径
- NSString *aString = [NSString stringWithContentsOfFile:filePath encoding:encodingCode error:&error];
- NSLog(@"Error:%@", [error localizedDescription]);
- NSData *data = [aString dataUsingEncoding:encodingCode];
- NSString *string = [[NSString alloc] initWithData:data encoding:encodingCode];
- NSLog(@"%@", string);
- /*
- // 如果有必要,还可以把文件创建出来再测试
- [string writeToFile:[NSString stringWithFormat:@"/Users/dlios1/Desktop/%@.xml", arrEncodingName[i]]
- atomically:YES
- encoding:encodingCode
- error:&error];
- */
- }
- }
- return 0;
- }