应用都要遇到一个很头疼的问题:文字编码,汉字的 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];
NSString *decoded = [temp URLDecodedString];
分享到:
相关推荐
在解析xib文件的时候发现有的节点内容的编码是 base64-UTF8,其实这个节点内容的编码顺序是先将NSString转化为utf8格式的NSData,再将NSData通过base64加密。刚拿到这样的字符串的时候感觉有点绕,但是仔细分析下来...
Objective-C语言有关NSString的各种用法(创建、截取、判断比较、转化数据类型、拼接、替换…)
处理方法: 代码如下: NSString *string1 = @”讨厌的节点 </p>”; /*此处将不想要的字符全部放进characterSet1中,不需另外加逗号或空格之类的,除非字符串中有你想要去除的空格,此处”]; // 将stri
NSString-BlockHelper NSString + BlockHelper 例子 NSString *word1 = @"word1"; NSString *word2 = @"word2"; NSString *word3 = word1.add(@" ").add(word2); NSLog(@"%@",word3); //output : word1 ...
NSString-Extra 给NSString增加一些实用的分类 1.MD5加密解密 2.HMAC加密解解密 包含服务器时间的HMAC加密 3.hsa1/256/512的加密解密 4.base64的编码和解码 5.URL特殊字符的编码和解码(ios9以下适用) 6.获取文件在...
Objective-C-如何创建和使用NSString最新2017-印地语- 视频:-Yogesh Patel在Objective-C中使用NSString类的介绍。 在本频道中,我将在多部视频中讲授大多数目标C编程语言。 一定要去MyChannel享受视频和不要忘记...
NSString类别,用于MD5,SHA1,SHA256,SHA512哈希和具有较小内存使用量的文件的哈希 NSString哈希方法 string.md5String string.sha1String string.sha256String string.sha512String HMAC哈希方法 [string ...
NSData+Crypto是一个 Mac 和 iOS 的NSData和NSString包装器,用于 CommonCrypto 框架的摘要方法。 包装了以下摘要函数: MD2 MD4 MD5 沙1 sha224 sha256 sha384 sha512 所有摘要函数都可用于NSData 、 ...
(2)常用创建方法 代码如下: NSString *string = [[NSString alloc] init]; string = @”i am an iOSDevTip too!”; (3)用initWithString创建字符串 代码如下: NSString *string = [[NSString alloc] ...
一行代码搞定NSString和NSData的md5加密
Objective-C 中 NSString 关于常见 Hash 算法的分类,能对字符串,文件进行 Hash 运算,具备 HMAC 功能。支持的 Hash 算法有:MD5、SHA1、SHA256、SHA512。
NSString+表情符号 入门 NSString (Emoji) 扩展了 NSString 类以提供与 Emoji 表情符号相关的自定义功能。 通过此类别,可以将转换为 unicode 表情符号字符,反之亦然(如果您需要将用户键入的消息发布到远程服务,...
是iOS开发中Objective-C语言基础的NSString操作的总结性文档,里面包含了NSString操作的大部分方法
NSString-验证 NSString 上用于检查有效性和转换字符串的类别
NSString NSArray NSDictionary 方法名释义
集成了火狐内核的浏览器控件,压缩包是一个完整的解决方案demo,可结合爬虫技术使用,下载后觉得不错的希望给个好评,谢谢喽
OC-NSString为什么用copy修饰而不是用strong
基于的IDNA String扩展和NSString覆盖。 当前要求完整的转换表和联接器验证。 使用它可以在Unicode和ASCII之间转换国际化域名(IDN)。 要在自己的项目中使用,您需要包括Shared/Swift文件夹中的一些文件,并确保...