字符串编码转换(GBK) NSString, char, NSData相互转化
来源:互联网 发布:java基础编程实例 编辑:程序博客网 时间:2024/05/27 20:20
解决方案:1、ios手机端通过后台获取含有中文时,出现乱码即:将获取到的GBK 编码的字符解析成正常的汉字方法://声明一个gbk编码类型 NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);//使用如下方法 将获取到的数据按照gbkEncoding的方式进行编码,结果将是正常的汉字NSString *zhuanHuanHouDeShuJu = [[NSString alloc] initWithData:huoQuDaoDeData encoding:gbkEncoding];例子:本次项目因为使用的是ASIFormDataRequest 工具类解析从后台获取的数据,所以,将ASIHTTPRequest.m文件中的如下方法:- (NSString *)responseString{ NSData *data = [self responseData]; if (!data) { return nil; } return [[[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:[self responseEncoding]] autorelease];}替换为- (NSString *)responseString{ NSData *data = [self responseData]; if (!data) { return nil; } //明确表示用 gbkEncoding 进行解码 NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); return [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:gbkEncoding];}届时,我们再用下面这个方法请求或发送中文,都不会有问题了:// 本类的公共方法 用于通过指定的URL获取数据。+(NSString *)getStingbyHTTPURL2:(NSString *)url{ NSString *encodedURL = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; ASIFormDataRequest *asiHttpRequest = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:encodedURL]]; NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8); [asiHttpRequest setStringEncoding:enc]; [asiHttpRequest startSynchronous]; asiHttpRequest.delegate = self; NSString *strResult = [asiHttpRequest responseString]; //以上的修改就是为了这句 return strResult; }参考: http://blog.sina.com.cn/s/blog_9e8867eb01013gbe.html从 GBK 转到 UTF-8 (上面的例子可作为一个成功案例)用 NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) ,然后就可以用initWithData:encoding来实现。从 UTF-8 转到 GBKCFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000),得到的enc却是kCFStringEncodingInvalidId。没关系,试试 NSData *data=[nsstring dataUsingEncoding:-2147482063]; 注意:必须使用kCFStringEncodingGB_18030_2000这个字符集,那个kCFStringEncodingGB_2312_80试了也不行。
成功案例: 将uif-8格式(xcode默认的)的字符串str_selectedLeiXing 转换为GBK格式的strGBK,如下所示:
NSData *data = [str_selectedLeiXing dataUsingEncoding:-2147482063];
NSString *strGBK = [[NSString alloc]initWithData:data encoding:-2147482063];
以上代码的实现,不需要添加任何附加开发包。
iphone之NSString, char, NSData相互转化1. NSString转化为UNICODE String:(NSString*)fname = @“Test”; char fnameStr[10];memcpy(fnameStr, [fname cStringUsingEncoding:NSUnicodeStringEncoding], 2*([fname length]));2. NSString转化为char(NSString*)fname = @“Test”;char fnameStr[10];fnameStr =[fname UTF8String];3. char -> NSData: 方法一: char * postData = "TEST"; NSData *data = [NSData dataWithBytes:postData length:strlen(postData)]; 方法二: 转换为NSString: - (id)initWithUTF8String:(const char *)bytes 然后用NSString的 - (NSData *)dataUsingEncoding:(NSStringEncoding)encoding4. NSData ->char NSData returnData ; char* bu=[returnData bytes];//使用下面两个方法,获取可以将一个nsstring 从gbk和utf8之间互转5. NSData->NSStringNSString* aStr;aStr = [[NSString alloc] initWithData:aData encoding:NSASCIIStringEncoding];6. NSString->NSDataNSData* aData;aData = [aStr dataUsingEncoding: NSASCIIStringEncoding];参考:http://blog.sina.com.cn/s/blog_4adf31ea0100t4y7.html
http://www.devdiv.com/article-1397-1.html
- 字符串编码转换(GBK) NSString, char, NSData相互转化
- 字符串编码转换(GBK) NSString, char, NSData相互转化 从 GBK 转到 UTF-8
- 字符串编码转换(GBK) NSString, char, NSData相互转化 从 GBK 转到&nb
- iPhone之NSString, char, NSData相互转化
- iphone之NSString, char, NSData相互转化
- iphone之NSString, char, NSData相互转化
- iphone之NSString, char, NSData相互转化
- iphone之NSString, char, NSData相互转化
- iphone之NSString, char, NSData相互转化
- NSString与NSData,char*相互转化
- iphone之NSString, char, NSData相互转化
- iphone之NSString, char, NSData相互转化
- NSString, char, NSData,UIImage相互转化
- NSData NSString char *之间 || NSData和NSArray的相互转换
- [Iphone]NSString, char, NSData相互转化
- NSString,NSData,std::string,const char*相互转化
- IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换
- IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换
- Windows7操作系统启动故障解决方案集锦
- 计算程序的耗时
- PHP实现快速排序
- hdu1250-Hat's Fibonacci
- 基于JUNGO STACK的USB下载流程
- 字符串编码转换(GBK) NSString, char, NSData相互转化
- 实验1《数据库与表的基本操作》
- 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述
- [UIView recursiveEnumerateSubviewsUsingBlock:]: unrecognized selector sent to instance
- VS2008或2010资源管理器里为啥没有解决方案
- C++内存管理学习笔记(1)
- hdu 1228 A + B
- hdu1250-Hat's Fibonacci
- windows 7接内外网出现冲突