iphone里读取gb2312(中文)编码文…
2013-12-20 13:00
369 查看
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的常量定义。
enum {
NSASCIIStringEncoding = 1,
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding =
8,
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11,
NSWindowsCP1252StringEncoding = 12,
NSWindowsCP1253StringEncoding = 13,
NSWindowsCP1254StringEncoding = 14,
NSWindowsCP1250StringEncoding = 15,
NSISO2022JPStringEncoding =
21,
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding =
NSUnicodeStringEncoding,
#if MAC_OS_X_VERSION_10_4 <=
MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <=
__IPHONE_OS_VERSION_MAX_ALLOWED
NSUTF16BigEndianStringEncoding =
0x90000100,
NSUTF16LittleEndianStringEncoding =
0x94000100,
NSUTF32StringEncoding =
0x8c000100,
NSUTF32BigEndianStringEncoding =
0x98000100,
NSUTF32LittleEndianStringEncoding =
0x9c000100
#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
NSString
9639
Encoding enc =
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *textFile = [NSString
stringWithContentsOfFile:filePath encoding:enc error:nil];
那么第二个问题就解决了
3。如何读取其它编码文件?
相信,通过以上的方法,第三个问题也可以很顺利的解决了。
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的常量定义。
enum {
NSASCIIStringEncoding = 1,
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding =
8,
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11,
NSWindowsCP1252StringEncoding = 12,
NSWindowsCP1253StringEncoding = 13,
NSWindowsCP1254StringEncoding = 14,
NSWindowsCP1250StringEncoding = 15,
NSISO2022JPStringEncoding =
21,
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding =
NSUnicodeStringEncoding,
#if MAC_OS_X_VERSION_10_4 <=
MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <=
__IPHONE_OS_VERSION_MAX_ALLOWED
NSUTF16BigEndianStringEncoding =
0x90000100,
NSUTF16LittleEndianStringEncoding =
0x94000100,
NSUTF32StringEncoding =
0x8c000100,
NSUTF32BigEndianStringEncoding =
0x98000100,
NSUTF32LittleEndianStringEncoding =
0x9c000100
#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
NSString
9639
Encoding enc =
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *textFile = [NSString
stringWithContentsOfFile:filePath encoding:enc error:nil];
那么第二个问题就解决了
3。如何读取其它编码文件?
相信,通过以上的方法,第三个问题也可以很顺利的解决了。
相关文章推荐
- iphone里读取gb2312(中文)编码文件或者二进制流(转)
- iphone里读取gb2312(中文)编码文件或者二进制流。
- iPhone里读取gb2312(中文)编码文件或者二进制流
- iphone里读取gb2312(中文)编码文件或者二进制流。
- iphone里读取gb2312(中文)编码文件或者二进制流
- iphone里读取gb2312(中文)编码文件或者二进制流
- iphone里读取gb2312(中文)编码文件或者二进制流。
- iphone里读取gb2312(中文)编码文件或者二进制流。
- 自动检测文本文件编码是否为GB2312(简体中文),并转换为UTF8编码,附一个GB2312全区对应的utf8编码码表
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
- c# 正确读取存储中文,以及如何获取字节流编码
- iphone里读取BG2312编码文件或者二进制流
- 关于中文的几个编码GB2312、GBK、GB18030、GB13000
- 在Windows下使用TinyXML-2读取UTF-8编码包含中文字符的XML文件
- 总结关于iPhone中UIWEBVIEW读取本地GBK编码格式html
- python获取html编码GB2312中文乱码的问题
- [Python] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
- 自动识别判断url中的中文参数是GB2312还是Utf-8编码
- 设置vim支持中文编码GB2312和Unicode编码UTF8
- 读取text文档中文内容乱码以及string中文编码判断