UTF-8 和 GBK 的 NSString 相互转化的方法
来源:互联网 发布:无法编译java 编辑:程序博客网 时间:2024/05/22 00:47
应用都要遇到一个很头疼的问题:文字编码,汉字的 GBK 和 国际通用的 UTF-8 的互相转化稍一不慎,
就会满屏乱码。下面介绍 UTF-8 和 GBK 的 NSString 相互转化的方法
从 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];
就会满屏乱码。下面介绍 UTF-8 和 GBK 的 NSString 相互转化的方法
从 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];
原文地址:http://www.ccbase.net/post/23.html
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- UTF-8 和 GBK 的 NSString 相互转化的方法
- GBK与UTF-8的相互转化 Windows Linux
- 字符串编码转换(GBK) NSString, char, NSData相互转化 从 GBK 转到 UTF-8
- GBK和UTF-8的区别与相互转换
- NSDate和NSString之间的相互转化
- NSString和NSDate的相互转化
- NSString和NSDate的相互转化
- iOS UIImage 和 NSString的相互转化
- string和NSString*的相互转化
- NSString和NSDate的相互转化
- NSString 和 NSNumber 的相互转化
- IE7下浮动(float)层不能实现环绕的问题
- CSV文件读取
- 时光悄悄流逝,光阴不再使你我天真
- 编程1
- 从50个数里面取9个不重复的随机数
- UTF-8 和 GBK 的 NSString 相互转化的方法
- Oracle中BLOB字段存储4GB以下视频数据的方法
- NGINX 开启PATHINFO
- UIVIEW圆角设置
- codeforces 241 A
- 笔记-SNMP
- userdb 的hs_business_object 表分析
- C中调用JAVA的参数、方法
- 不是不想喧闹 而是少了一种理由