zoukankan      html  css  js  c++  java
  • 【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 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;
    }
    


  • 相关阅读:
    git的使用
    模块化的 require 和 import的区别
    Javascript模块化编程(二)commonJS规范和AMD规范
    Javascript模块化编程(三):require.js的用法
    SQL精华语句
    Convert sql 函数格式
    sql分页存储过程(汇总)
    jira和svn结合
    使用Java Service Wrapper 把Java程序作为Windows系统服务
    Eclipse使用技巧
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5074002.html
Copyright © 2011-2022 走看看