【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;
}
【iOS】怎样推断文本文件的字符编码格式的更多相关文章
- Java推断文本文件编码格式以及读取
假设不是约定好的,要想解析txt文件就须要知道文件编码类型,因为文件编码类型众多.比如UTF-8,GBK.UTF-16,GB2312等等. 事实上有简单的办法.仅仅须要这样就能够了 String fi ...
- UTF-8和GBK等中文字符编码格式介绍及相互转换
我们有很多时候需要使用中文编码格式,比如gbk.gb2312等,但是因为主要针对中文编码设置,因此并不完全通用,这样一来就有了在各编码间相互转换的需求,比如和UTF8的转换.可是在我使用的过程中,却发 ...
- Linux下文件字符编码格式检测和转换
目前多数情况下, 我们遇到的非英文字符文件都是使用UTF-8编码的, 这时一般我们查看这些文件的内容都不会有问题. 不过有时, 我们有可能会遇到非UTF-8编码的文件, 比如中文的GBK编码, 或者俄 ...
- 在字符编码格式选项里UTF-8(无BOM)
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE“的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符 ...
- Java编程的逻辑 (58) - 文本文件和字符流
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- ios 加密解密工具类字符判断等
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface Helpers : NSObject ...
- Unity3d发布的iOS产品中使用GB2312字符编码(CP936)
最近在开发中要用到GB2312字符编码(CP936),在C#代码中便有了如此代码 System.Text.Encoding.GetEncoding() 这在Unity3d 编辑器下运行没有任何问题,打 ...
- iOS 删除NSString中特定字符
+(NSString *) stringDeleteString:(NSString *)str { NSMutableString *str1 = [NSMutableString stringWi ...
- 如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)
转自:http://blog.csdn.net/jiangqin115/article/details/42684017 UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, ...
随机推荐
- wechat4j框架具体解释
发送消息: 基于上面access_token的逻辑,在构造发送消息对象的时候请依照例如以下代码. wechat4j和微信强力推荐的方法 CustomerMsg customerMsg = new Cu ...
- 如何使用echo.js实现图片的懒加载(整理)
如何使用echo.js实现图片的懒加载(整理) 一.总结 一句话总结:a.在img标签中添加data-echo属性加载真实图片:<img class="loading" sr ...
- Oracle 12C R2 on Linux 7.X Data Guard 搭建文档
1.查看主机和数据库信息 [oracle@oracle1 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on ...
- 15、python学习手册之:列表和字典
1.列表属于可变序列,支持在原处的修改 2.在标准python解锁器内部,列表就是C数组而不是链接结构 3.内置函数map对序列中的各项应用一个函数并把结果收集到一个新的列表中 eg:list(map ...
- Flask项目之手机端租房网站的实战开发(四)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
- 深度解析VC中的消息
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情 ...
- tensorflow compile
bazel build --spawn_strategy=standalone tensorflow/examples/label_image/...
- angular 创建服务
一:新建服务模块和服务文件 ng g module services --spec=false ng g service services/quote --spec=false 二:在quote.se ...
- Day1:循环语句(While,For)
一.while循环 while 条件: 条件为真执行的语句 esle: 条件为假执行的语句 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author: ...
- Qt的一些开发技巧
Lambda匿名函数 有时候槽函数代码辑逻辑非常简单,可以直接用下面的Lambda匿名函数处理信号,简捷明了.需c++11支持,不支持自身递归调用. 1 2 3 4 5 6 7 QComboBox * ...