UTF-8和GBK的NSString相互转化

GBK---文字编码,汉字编码

UTF-8 ---- 国际通用

从 GBK 转到 UTF-8:

用 NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) ,

然后就可以用initWithData:encoding来实现

从 UTF-8 转到 GBK

CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)

转换字符编码主要用到CFStringConvertEncodingToNSStringEncoding函数。


完整代码如下:
NSURL *url = [NSURL URLWithString:urlStr];
NSData *data = [NSData dataWithContentsOfURL:url]; 
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];
 
一个比较方便的转换NSString为UTF8编码的函数,大家可以试试
 
头文件:
@interface NSString (OAURLEncodingAdditions) 
- (NSString *)URLEncodedString; 
- (NSString *)URLDecodedString; 
@end
m文件:

@implementation 
NSString (OAURLEncodingAdditions) 
 - (NSString *)URLEncodedString
 NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)self,NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8);
 [result autorelease];
 return result; 
}

- (NSString*)URLDecodedString
{
   NSString *result = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,(CFStringRef)self, CFSTR(""),kCFStringEncodingUTF8);CFSTR(""),kCFStringEncodingUTF8); 
   [result autorelease];    
   return result; 
@end
如果需要转换一个NSString, 只需要

NSString *temp = [@"测试utf8" URLEncodedString];  
NSString *decoded = [temp URLDecodedString];



你可能感兴趣的:(utf-8,gbk,字符编码)