iOS_技巧(4)_转码(UTF-8 /GBK/Unicode/GBK2312)
来源:互联网 发布:互助保险 知乎 编辑:程序博客网 时间:2024/06/05 05:20
一丶 UTF-8 /GBK
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification
/** * GBK->UTF8 *///方法一 旧方法NSString *encode1 = [@"%E6%88%91" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSLog(@"--encode1->%@<------", encode1);//方法二 新方法NSLog(@"--encode2->%@<------", [@"%E6%88%91" stringByRemovingPercentEncoding]);/** * UTF-8 ->GBK *///方法一 旧方法NSString *decode1 = [@"我" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSLog(@"--decode1-->%@<-----", decode1);//方法二 新方法NSLog(@"--decode1-->%@<-----", [@"我" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]);
二丶Unicode/UTF-8
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
出现类似这样格式的字段"\U6df1\U5733\U56fd\U5f00\U884c01\U673a\U623",通常为Unicode码,转换测试函数为
/** * Unicode码UTF-8 * * @param unicodeStr Unicode * * @return UTF-8 */- (NSString *)replaceUnicode:(NSString *)unicodeStr{ NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"]; NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""]; NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding]; //旧方法// NSString *returnStr = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL]; //新方法NSString *returnStr = [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:NULL error:NULL]; return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];}
三丶 GBK/UTF-8
出现类似这样格式的字段"深圳银行",通常为GBK码,转换方式为
NSURL *url = [NSURL URLWithString:@"深圳银行"]; NSData *responseData = [NSData dataWithContentsOfURL:url]; NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSString *responseString = [[NSString alloc] initWithData:responseData encoding:enc];
四丶 UTF-8/GBK2312
在ftp转码解码中遇到的问题;
//解码:从服务器请求数据,转成显示中文- (NSString *)ChangeToChinessEncode:(NSString *)fileTitleStr{ if (fileTitleStr != NULL) { char *ReadStoreValue = (char *)[fileTitleStr cStringUsingEncoding:[NSString defaultCStringEncoding]]; if ( ReadStoreValue != NULL ) { fileTitleStr = [NSString stringWithCString:ReadStoreValue encoding: -2147482062]; } } return fileTitleStr;}//编码:- (NSString *)encodeString:(NSString *)string;{ NSString *urlEncoded = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes( NULL, (__bridge CFStringRef) string, NULL, (CFStringRef) @"!*'\"();:@&=+$,?%#[]% ", kCFStringEncodingGB_18030_2000); return urlEncoded;}
文/丶纳凉(简书作者)
原文链接:http://www.jianshu.com/p/352acbbbb244
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/352acbbbb244
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
- iOS_技巧(4)_转码(UTF-8 /GBK/Unicode/GBK2312)
- (UTF-8 /GBK/Unicode/GBK2312)
- unicode、GBK、UTF-8
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- UNICODE,GBK,UTF-8区别
- SSH框架之Hibernate的对象状态、一级缓存
- 我犯法了……^~^
- 郝斌数据结构 25 判断链表是否为空和求链表长度算法的演示
- 圈圈教你玩usb第一版硬件实物使用说明
- Java-Session技术的认知
- iOS_技巧(4)_转码(UTF-8 /GBK/Unicode/GBK2312)
- JavaEE – JPA(3):EntityManager相关核心概念
- (一)单例模式详解
- URI和URL的区别
- 算法设计与分析基础
- .*(.)(.*\\1).中.以及()还有*的含义
- 常见NullPointException的原因
- 关于字符设备文件和块设备文件的区别
- 大型分布式网站架构技术总结