IOS编码转化
原文地址:http://blog.csdn.net/huifeidexin_1/article/details/7883984
iOS中编码转化
1.UTF-8转化
NSString *data = @"你好,北京!";
//转换成UTF-8
NSString *dataUTF8 = [datastringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",dataUTF8);
//UTF-8转GBK,将UTF8代码替换,官方解释如下。
//Replaces all percent escapes with the matching characters as determined by the given encoding. Returns nil if the transformation is not possible (i.e. the percent escapes give a byte sequence not legal in the given encoding). See CFURLCreateStringByReplacingPercentEscapes in CFURL.h for more complex transformations
NSString *dataGBK = [dataUTF8stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",dataGBK);
在Xcode4.2中执行结果如下:

将上述方法封装,如下:
//Unicode转UTF-8
+ (NSString *)encodeToPercentEscapeString: (NSString *) input
{
// Encode all the reserved characters, per RFC 3986
// (<http://www.ietf.org/rfc/rfc3986.txt>)
NSString *outputStr = (NSString *)
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)input,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
return outputStr;
}
+ (NSString *)decodeFromPercentEscapeString: (NSString *) input
{
NSMutableString *outputStr = [NSMutableStringstringWithString:input];
[outputStr replaceOccurrencesOfString:@"+"
withString:@" "
options:NSLiteralSearch
range:NSMakeRange(0, [outputStrlength])];
return [outputStrstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
2.UTF-8和Unicode转化
//Unicode转UTF-8
+ (NSString*) replaceUnicode:(NSString*)aUnicodeString
{
NSString *tempStr1 = [aUnicodeStringstringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"];
NSString *tempStr2 = [tempStr1stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""];
NSString *tempStr3 = [[@"\""stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
NSData *tempData = [tempStr3dataUsingEncoding:NSUTF8StringEncoding];
NSString* returnStr = [NSPropertyListSerializationpropertyListFromData:tempData
mutabilityOption:NSPropertyListImmutable
format:NULL
errorDescription:NULL];
return [returnStrstringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"];
}
+(NSString *) utf8ToUnicode:(NSString *)string
{
NSUInteger length = [string length];
NSMutableString *s = [NSMutableStringstringWithCapacity:0];
for (int i = 0;i < length; i++)
{
unichar _char = [string characterAtIndex:i];
//判断是否为英文和数字
if (_char <= '9' && _char >='0')
{
[s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];
}
else if(_char >='a' && _char <= 'z')
{
[s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];
}
else if(_char >='A' && _char <= 'Z')
{
[s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];
}
else
{
[s appendFormat:@"\\u%x",[stringcharacterAtIndex:i]];
}
}
return s;
}
IOS编码转化的更多相关文章
- iOS编码规范参考
目录 注释 1.1 多行注释 1.2 单行注释 1.3 函数的注释 命名 2.1 常量的命名 2.2 函数的命名 2.3 变量的命名 2.3.1 成员变量 2.3.2 公 ...
- golang 编码转化
在网上搜索golang编码转化时,我们经常看到的文章是使用下面一些第三方库: https://github.com/djimenez/iconv-go https://github.com/qiniu ...
- Nodejs编码转化问题
目前Node.js仅支持hex.utf8.ascii.binary.base64.ucs2几种编码的转换.对于GBK,GB2312等编码,Nodejs自带的toString()方法不支持,因此中文转化 ...
- android iOS 编码问题害死人!
android 与后端服务器进行通信时,默认使用的编码格式是asi. 而iOS与后端通信时,获取的数据到iOS端默认被utf-8进行编码.所以,我们常常出现android能够从服务器端获取到数据,但是 ...
- 宽字符、多字节、unicode、utf-8、gbk编码转化
今天遇到一个编码的问题,困惑了我很长时间,所以就简要的的了解了一下常用的编码类型. 我们最常见的是assic编码,它是一种单字节编码,对多容纳256个字符. 我们在编程的时候经常遇到unicode,u ...
- iOS编码规范
The official raywenderlich.com Objective-C style guide. This style guide outlines the coding con ...
- [ACM_模拟] POJ1068 Parencodings (两种括号编码转化 规律 模拟)
Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...
- 报表开发工具中mysql数据库连接编码转化失效解决方案
1. 问题描述 在报表开发工具FineReport中,mysql数据库连接通过数据连接编码转换进行编码的转换,在通过报表录入往数据库中录入中文数据的时候,总是出现乱码,这个该怎么解决呢? 2. 解决方 ...
- ios编码转换 国标 UTF-8
我们知道,使用NSURLConnection的代理方法下载网页,存到一个NSData中, NSMutableData *pageData; [pageData appendData:data]; 如果 ...
随机推荐
- HDU 5873 Football Games(竞赛图兰道定理)
http://acm.hdu.edu.cn/showproblem.php?pid=5873 题意: 现在有比赛,所有队伍两两进行比赛,赢的积2分,输的积0分,如果平局的话就各自都积1分,现在给出每只 ...
- web前端小数点位数处理
- C# asp.net 比较两个时间的差求天数
string str1 = "2017-2-13 23:59:59"; string str2 = "2017-2-14 0:00:01"; DateTime ...
- shell 关系运算符
关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字. 下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 -eq 检测两个数是否相等,相等返 ...
- 会员通过消费攒积分,升级RENEW以及降级的需求
需求看上去及其简单,如下: 用文字描述就开始不容易了. 先按等级排个序,根据下一个等级,推前一个等级: --C---B----V-----A 在计算一下升级需要的积分:--C表示普通会员-----需要 ...
- ZC_C++类函数指针_模拟_Delphi类函数指针
ZC: C++的类函数指针 不像 Delphi的类函数指针,前者 需要规定死 是哪个类的函数的指针,后者就不需要 很灵活. 测试环境: Win7x64 cn_visual_studio_2010_ul ...
- Codeforces 847I - Noise Level
847I - Noise Level 思路:bfs. 代码: #include<bits/stdc++.h> using namespace std; #define ll long lo ...
- Codeforces C - Om Nom and Candies
C - Om Nom and Candies 思路:贪心+思维(或者叫数学).假设最大值max(wr,wb)为wr,当c/wr小于√c时,可以枚举r糖的数量(从0到c/wr),更新答案,复杂度√c:否 ...
- Python string常用函数
2017-07-03 23:26:08 1..replace(self, old, new, count=-1) replace()函数将旧字符串替换为新字符串,最后一个参数count为可选项,表示替 ...
- Android Toast.makeText用法
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.下面用一个实例来看看如何使用Toast ...