UTF-8 和 GBK 的 NSString 相互转化的方法
2013-01-24 15:20
274 查看
应用都要遇到一个很头疼的问题:文字编码,汉字的 GBK 和 国际通用的 UTF-8 的互相转化稍一不慎,
就会满屏乱码。下面介绍 UTF-8 和 GBK 的 NSString 相互转化的方法
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
char* c_test = "北京";
int nLen = strlen(c_test);
NSString* str = [[NSString alloc]initWithBytes:c_test length:nLen encoding:enc ];
NSLog(@"str = %@",str);
从 GBK 转到 UTF-8
用 NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) ,
然后就可以用initWithData:encoding来实现。
从 UTF-8 转到 GBK
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000),
得到的enc却是kCFStringEncodingInvalidId。
没关系,试试 NSData *data=[nsstring dataUsingEncoding:-2147482063];
转换字符编码主要用到CFStringConvertEncodingToNSStringEncoding函数,具体的大家可以看看这个函数的用法
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
完整代码如下:
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 的 NSString 相互转化的方法
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
char* c_test = "北京";
int nLen = strlen(c_test);
NSString* str = [[NSString alloc]initWithBytes:c_test length:nLen encoding:enc ];
NSLog(@"str = %@",str);
从 GBK 转到 UTF-8
用 NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) ,
然后就可以用initWithData:encoding来实现。
从 UTF-8 转到 GBK
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000),
得到的enc却是kCFStringEncodingInvalidId。
没关系,试试 NSData *data=[nsstring dataUsingEncoding:-2147482063];
转换字符编码主要用到CFStringConvertEncodingToNSStringEncoding函数,具体的大家可以看看这个函数的用法
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
完整代码如下:
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];
相关文章推荐
- ios开发中object-c中UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- ios开发中object-c中UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- ios开发中object-c中UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- 字符串编码转换(GBK) NSString, char, NSData相互转化 从 GBK 转到 UTF-8
- 字符串编码转换(GBK) NSString, char, NSData相互转化 从 GBK 转到 UTF-8
- 字符串编码转换(GBK) NSString, char, NSData相互转化
- GBK与UTF-8的相互转化 Windows Linux
- objective-c 将中文(GBK)转化为UTF-8数据的方法
- 字符串编码转换(GBK) NSString, char, NSData相互转化 从 GBK 转到&nb
- 程序或插件的转码方法(GBK转UTF-8) .
- GBK Unicode UTF 一点转换方法收集
- 把NSString 类型的字符串转化成 utf-8 字符串
- java和jsp中文编码问题的解决方法(ISO8859_1、GBK、UTF-8)