iphone里读取gb2312(中文)编码文件或者二进制流。

来源:互联网 发布:吉田朱里 知乎 编辑:程序博客网 时间:2024/05/05 01:10

iphone里读取gb2312(中文)编码文件或者二进制流。

说到文字编码,与文件读写打过交道的软件开发人员应该都知道,比如国际通用:UTF-8编码,ANSCII编码,Unicode编码中文:GB2312,GBK日文,Shift-jis等等。

说了这么多无关紧要的话,技术是来解决实际问题的:

1。如何读取UTF-8编码的文本文件?

2。如何读取GB2312(中文)的文本文件?

3。如何读取其它编码文件?


首先解决第一个问题,

1。如何读取UTF-8编码的文本文件?

    NSString *filePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:fileName];    [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]     //当然也可以采用如下方法    //NSData *data = [NSData dataWithContentsOfFile:filePath];    //NSString *textFile  = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


 

2。如何读取GB2312(中文)的文本文件?

可能很多人会想到,那还不简单,apple肯定提供了gb2312的文件编码常量,让我们看看有那些常量吧,看看 NSUTF8StringEncoding定义文件,应该会有GB2312的常量定义。

/* Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.See CFStringEncodingExt.h for a list of these encodings.See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.*/enum {    NSASCIIStringEncoding = 1,/* 0..127 only */    NSNEXTSTEPStringEncoding = 2,    NSJapaneseEUCStringEncoding = 3,    NSUTF8StringEncoding = 4,    NSISOLatin1StringEncoding = 5,    NSSymbolStringEncoding = 6,    NSNonLossyASCIIStringEncoding = 7,    NSShiftJISStringEncoding = 8,          /* kCFStringEncodingDOSJapanese */    NSISOLatin2StringEncoding = 9,    NSUnicodeStringEncoding = 10,    NSWindowsCP1251StringEncoding = 11,    /* Cyrillic; same as AdobeStandardCyrillic */    NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */    NSWindowsCP1253StringEncoding = 13,    /* Greek */    NSWindowsCP1254StringEncoding = 14,    /* Turkish */    NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */    NSISO2022JPStringEncoding = 21,        /* ISO 2022 Japanese encoding for e-mail */    NSMacOSRomanStringEncoding = 30,    NSUTF16StringEncoding = NSUnicodeStringEncoding,      /* An alias for NSUnicodeStringEncoding */#if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED    NSUTF16BigEndianStringEncoding = 0x90000100,          /* NSUTF16StringEncoding encoding with explicit endianness specified */    NSUTF16LittleEndianStringEncoding = 0x94000100,       /* NSUTF16StringEncoding encoding with explicit endianness specified */    NSUTF32StringEncoding = 0x8c000100,                       NSUTF32BigEndianStringEncoding = 0x98000100,          /* NSUTF32StringEncoding encoding with explicit endianness specified */    NSUTF32LittleEndianStringEncoding = 0x9c000100        /* NSUTF32StringEncoding encoding with explicit endianness specified */#endif};

很遗憾,我没找到,不过Apple留了个线索让我取找,不过仔细看看它的注释

Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.

See CFStringEncodingExt.h for a list of these encodings.

See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.

我的英文比较不好,但大意是看明白了,不在下面支持了编码格式,在CFStringEncodingExt.h 里头文件申明 。

我们通过finder的文件查找方法找到CFStringEncodingExt.h 。

仔细看看确实找到了kCFStringEncodingGB_18030_2000 ( 我以为是kCFStringEncodingGB_2312_80 ,实际上不是) 但是这个是CFStringEncoding类型,我们需要NSEncode的类型。

CFString 和NSString具有相同的内存结构,也是NSString的重要补充,通过查找CFString的帮助文档,找到了这个方法 CFStringConvertEncodingToNSStringEncoding

  NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);  NSString *textFile  = [NSString stringWithContentsOfFile:filePath encoding:enc error:nil];

那么第二个问题就解决了

3。如何读取其它编码文件?

相信,通过以上的方法,第三个问题也可以很顺利的解决了。

文章地址:http://www.cnblogs.com/likwo/archive/2011/06/26/2090914.html

转载请注明出处

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝买东西卖家不退货怎么办 手机清理后微信打不开视频怎么办 搜索历史已关闭怎么办 微博重新激活怎么办 淘宝直播反应慢怎么办 微信新设备无法登录怎么办 dnf自动连接失败怎么办 APP注册没有成功怎么办 忘记绑定微信号怎么办 淘宝钻石绣被骗怎么办 safari出现闪退怎么办 12123手机号被占用怎么办 12306换手机了怎么办 51串口打开失败怎么办 打开com串口失败怎么办 xp串口打开失败怎么办 台式电脑没光驱怎么办 相机功能用不了怎么办 支付宝登录失败怎么办 淘宝号限制登陆怎么办 海信电视看不了怎么办 淘宝不记得密码怎么办 淘宝号忘记了怎么办 号码注销支付宝怎么办 旺旺号限制登录怎么办 淘宝单被监控了怎么办 晚上手机网速慢怎么办 卖家淘金币怎么办 淘宝不能下单怎么办 淘宝店铺失效了怎么办 淘宝订单没货怎么办 拼多多预售到期怎么办 直通车出价太高怎么办 htc手机黑屏打不开怎么办 商品被屏蔽该怎么办 遇到恶意差评怎么办 银行账户被锁定怎么办 淘宝卖家说退货不全怎么办 买家旺旺被限制怎么办 淘宝支付不了了怎么办 手机图标变黑了怎么办