NSString 编码

2018-07-14  本文已影响0人  舌尖上的大胖
image.png

一、澄清

首先澄清一点:NSString 中的字符串对象本身,并不存在编码问题。所提及的编码问题,不是字符串类型本身的,而是存储时所采用的编码。如:存储成 NSData

最常见的:

NSString *s = @"中文abc";
NSData *data = [s dataUsingEncoding:NSUTF8StringEncoding];
[data writeToFile:@"test.txt" atomically:YES];

其中的 NSUTF8StringEncodingNSStringEncoding 类型,位于 NSString.h 中。

二、NSUTF8StringEncodingCFStringEncodings

NSStringEncoding 中直接包含的的编码类型并不是很全,可以使用 CFStringEncodings 中的类型,通过 CFStringConvertEncodingToNSStringEncoding 进行转换。
  CFStringEncodingsCFStringEncodingExt.h 中。

例如:(从 NSData 中,根据编码类型,提取 NSString

NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

retStr = [[NSString alloc] initWithData:data encoding:enc];

在提取时,如果指定的编码不匹配,会返回 nil。也可以用这种机制做编码侦测。

(完)

上一篇下一篇

猜你喜欢

热点阅读