【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, ...
随机推荐
- iOS多语言(国际化)开发(尾随系统 + APP内手动设置)
一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...
- PMP杂谈--名词解释
过程:PMP中常常提到过程,好像非常高大上,实则不然,过程说白了就是一系列的行动和活动,用来创建预定的产品,服务或成果. 就这么简单. 再深入点就是,行动和活动当然都会有ITTO(输入,工具和技术.输 ...
- perl模块 Compress::Raw::Lzma 的安装
perl模块 Compress::Raw::Lzma 的安装 用 cpan 安装任意perl模块总是提示 Couldn't untar Compress-Raw-Lzma-2.070.tar: 'Ca ...
- ubuntu-安装中文拼音输入法
一下内容转载自http://blog.chinaunix.net/uid-24410388-id-3501873.html 自己验证了可用.转载了,已留做日后使用 步骤: step1:安装ibus所需 ...
- UART和RS232/RS485的关系,RS232与RS485编程
http://wpp9977777.blog.163.com/blog/static/4625100720138495943540/ 串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232 ...
- 【Codeforces Round #432 (Div. 2) A】 Arpa and a research in Mexican wave
[链接]h在这里写链接 [题意] 在这里写题意 [题解] t<=k,输出t t>=n,输出k-t+n 其他情况都是k [错的次数] 0 [反思] 在这了写反思 [代码] /* */ #in ...
- COGS——C 14. [网络流24题] 搭配飞行员
http://cogs.pro/cogs/problem/problem.php?pid=14 ★★☆ 输入文件:flyer.in 输出文件:flyer.out 简单对比时间限制:1 s ...
- COGS——C 908. 校园网 || 洛谷——P 2746 [USACO5.3]校园网Network of Schools
http://www.cogs.pro/cogs/problem/problem.php?pid=908 || https://www.luogu.org/problem/show?pid=27 ...
- amazeui学习笔记--css(基本样式)--样式统一Normalize
amazeui学习笔记--css(基本样式)--样式统一Normalize 一.总结 1.统一浏览器默认样式: Amaze UI 也使用了 normalize.css,就是让不同浏览器显示相同的样式 ...
- JS错误记录 - 取消事件冒泡、按钮、回车、ctrl回车提交留言
window.onload = function () { var oDiv = document.getElementById('div1'); var oBtn = document.getEle ...