iOS编码转换

来源:互联网 发布:淘宝补差价是什么意思 编辑:程序博客网 时间:2024/06/11 09:05
Unicode 转换成 GBK
NSString *string= @"中国chn"
NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
char *cString = [string cStringUsingEncoding:gbkEncoding];
或者:
NSData *data = [string dataUsingEncoding:gbkEncoding];
char *cString = (char *)[data bytes];

转换时,有些字符可能不兼容,比如:¥、£、~(在iOS5.0和6.0中键盘的编码不一样),需要做特殊处理。


需要注意的是:
NSString中:
- (NSUInteger)length
返回Unicode字符数,包括单个字符组成的字符序列,因此不能用此方法确定字符串在打印时是否可见以及显示的长度。默认采用big-endian方式存储

C语言中strlen:
返回字符串的长度(非编码以后的字符数,而是编码占用的字节数),不含'\0'

int 强制类型转换 char
char占一个字节对应的十进制整数范围为0~255
当int最大超过255时,只会保留低位,舍弃高位.
即:(char)(value%256)  == (char)value
GBK采用双字节编码
UTF-8采用变长编码,最大长度4字节
ASCII:128个字符,其中33个无法显示
UNICODE编码:(兼容ISO 8859-1  前256个字符)
0~0x10FFFFFF