【iOS】如何判断文本文件的字符编码格式

来源:互联网 发布:php 转数值 编辑:程序博客网 时间:2024/04/29 14:59

总体思路:

遍历所有的字符编码,能正确读取输出转换的就是文本文件的编码格式。


代码如下:

////  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 char * 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;}


0 0