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

总体思路:

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


代码如下:

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  main.m  
  3. //  检测文本字符编码格式的小技巧  
  4. //  
  5. //  Created by 杜子兮 (duzixi) on 14-6-21.  
  6. //  Copyright (c) 2014年 lanou3g.com All rights reserved.  
  7. //  
  8.   
  9. #import <Foundation/Foundation.h>  
  10.   
  11. int main(int argc, const charchar * argv[])  
  12. {  
  13.   
  14.     @autoreleasepool {  
  15.           
  16.         NSArray *arrEncoding = @[@(NSASCIIStringEncoding),  
  17.                                  @(NSNEXTSTEPStringEncoding),  
  18.                                  @(NSJapaneseEUCStringEncoding),  
  19.                                  @(NSUTF8StringEncoding),  
  20.                                  @(NSISOLatin1StringEncoding),  
  21.                                  @(NSSymbolStringEncoding),  
  22.                                  @(NSNonLossyASCIIStringEncoding),  
  23.                                  @(NSShiftJISStringEncoding),  
  24.                                  @(NSISOLatin2StringEncoding),  
  25.                                  @(NSUnicodeStringEncoding),  
  26.                                  @(NSWindowsCP1251StringEncoding),  
  27.                                  @(NSWindowsCP1252StringEncoding),  
  28.                                  @(NSWindowsCP1253StringEncoding),  
  29.                                  @(NSWindowsCP1254StringEncoding),  
  30.                                  @(NSWindowsCP1250StringEncoding),  
  31.                                  @(NSISO2022JPStringEncoding),  
  32.                                  @(NSMacOSRomanStringEncoding),  
  33.                                  @(NSUTF16StringEncoding),  
  34.                                  @(NSUTF16BigEndianStringEncoding),  
  35.                                  @(NSUTF16LittleEndianStringEncoding),  
  36.                                  @(NSUTF32StringEncoding),  
  37.                                  @(NSUTF32BigEndianStringEncoding),  
  38.                                  @(NSUTF32LittleEndianStringEncoding)  
  39.                                  ];  
  40.           
  41.         NSArray *arrEncodingName = @[@"NSASCIIStringEncoding",  
  42.                                      @"NSNEXTSTEPStringEncoding",  
  43.                                      @"NSJapaneseEUCStringEncoding",  
  44.                                      @"NSUTF8StringEncoding",  
  45.                                      @"NSISOLatin1StringEncoding",  
  46.                                      @"NSSymbolStringEncoding",  
  47.                                      @"NSNonLossyASCIIStringEncoding",  
  48.                                      @"NSShiftJISStringEncoding",  
  49.                                      @"NSISOLatin2StringEncoding",  
  50.                                      @"NSUnicodeStringEncoding",  
  51.                                      @"NSWindowsCP1251StringEncoding",  
  52.                                      @"NSWindowsCP1252StringEncoding",  
  53.                                      @"NSWindowsCP1253StringEncoding",  
  54.                                      @"NSWindowsCP1254StringEncoding",  
  55.                                      @"NSWindowsCP1250StringEncoding",  
  56.                                      @"NSISO2022JPStringEncoding",  
  57.                                      @"NSMacOSRomanStringEncoding",  
  58.                                      @"NSUTF16StringEncoding",  
  59.                                      @"NSUTF16BigEndianStringEncoding",  
  60.                                      @"NSUTF16LittleEndianStringEncoding",  
  61.                                      @"NSUTF32StringEncoding",  
  62.                                      @"NSUTF32BigEndianStringEncoding",  
  63.                                      @"NSUTF32LittleEndianStringEncoding"  
  64.                                     ];  
  65.           
  66.         for (int i = 0 ; i < [arrEncoding count]; i++) {  
  67.             unsigned long encodingCode = [arrEncoding[i] unsignedLongValue];  
  68.             NSLog(@"(%@)", arrEncodingName[i]);  
  69.             NSError *error = nil;  
  70.             NSString *filePath = @"/Users/dlios1/Desktop/event.xml"// <---这里是要查看的文件路径  
  71.             NSString *aString = [NSString stringWithContentsOfFile:filePath encoding:encodingCode  error:&error];  
  72.             NSLog(@"Error:%@", [error localizedDescription]);  
  73.             NSData *data = [aString dataUsingEncoding:encodingCode];  
  74.             NSString *string = [[NSString alloc] initWithData:data encoding:encodingCode];  
  75.             NSLog(@"%@", string);  
  76.               
  77.             /* 
  78.             // 如果有必要,还可以把文件创建出来再测试 
  79.             [string writeToFile:[NSString stringWithFormat:@"/Users/dlios1/Desktop/%@.xml", arrEncodingName[i]] 
  80.                      atomically:YES 
  81.                        encoding:encodingCode 
  82.                           error:&error]; 
  83.              */  
  84.         }  
  85.     }  
  86.     return 0;  
  87. }  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值