原文地址: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编码转化的更多相关文章

  1. iOS编码规范参考

    目录      注释 1.1  多行注释 1.2  单行注释 1.3  函数的注释   命名 2.1  常量的命名 2.2  函数的命名 2.3  变量的命名 2.3.1  成员变量 2.3.2  公 ...

  2. golang 编码转化

    在网上搜索golang编码转化时,我们经常看到的文章是使用下面一些第三方库: https://github.com/djimenez/iconv-go https://github.com/qiniu ...

  3. Nodejs编码转化问题

    目前Node.js仅支持hex.utf8.ascii.binary.base64.ucs2几种编码的转换.对于GBK,GB2312等编码,Nodejs自带的toString()方法不支持,因此中文转化 ...

  4. android iOS 编码问题害死人!

    android 与后端服务器进行通信时,默认使用的编码格式是asi. 而iOS与后端通信时,获取的数据到iOS端默认被utf-8进行编码.所以,我们常常出现android能够从服务器端获取到数据,但是 ...

  5. 宽字符、多字节、unicode、utf-8、gbk编码转化

    今天遇到一个编码的问题,困惑了我很长时间,所以就简要的的了解了一下常用的编码类型. 我们最常见的是assic编码,它是一种单字节编码,对多容纳256个字符. 我们在编程的时候经常遇到unicode,u ...

  6. iOS编码规范

      The official raywenderlich.com Objective-C style guide.   This style guide outlines the coding con ...

  7. [ACM_模拟] POJ1068 Parencodings (两种括号编码转化 规律 模拟)

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  8. 报表开发工具中mysql数据库连接编码转化失效解决方案

    1. 问题描述 在报表开发工具FineReport中,mysql数据库连接通过数据连接编码转换进行编码的转换,在通过报表录入往数据库中录入中文数据的时候,总是出现乱码,这个该怎么解决呢? 2. 解决方 ...

  9. ios编码转换 国标 UTF-8

    我们知道,使用NSURLConnection的代理方法下载网页,存到一个NSData中, NSMutableData *pageData; [pageData appendData:data]; 如果 ...

随机推荐

  1. 【Python】【内置函数】【bytes&bytearray&str&array】

    [bytes] 英文文档: class bytes([source[, encoding[, errors]]]) Return a new “bytes” object, which is an i ...

  2. Cocos2d-x学习笔记(八)精灵对象的创建

    精灵类即是Sprite,它实际上就是一张二维图. 它首先直接继承了Node类,因此,它具有节点的特征,同时,它也直接继承了TextureProtocol类,因此,它也具有纹理的基本特征. 这里,有必要 ...

  3. django 接口编写的配置

    一.修改settings文件 ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'corsheaders' ]    #加入该app 安装django-cors-hea ...

  4. Jmeter 4.0 对返回Json处理

    研究这个的目的是:如果返回信息是比较复杂的,需要对返回信息中数据以及数据的层级做断言 我找了一些我们的接口,层级关系都太简单了,最复杂的就是这两个了:[而且都是get接口,原来get接口还要增加测试点 ...

  5. 使用 CSS 选择器从网页中提取数据

    在 R 中,关于网络爬虫最简单易用的扩展包是 rvest.运行以下代码从 CRAN 上安装:install.packages("rvest")首先,加载包并用 read_html( ...

  6. (转)netty、mina性能对比分析

    转自: http://blog.csdn.net/mindfloating/article/details/8622930 流行 NIO Framework netty 和 mina 性能测评与分析 ...

  7. WPF中的Style(风格,样式)

    作者: 周银辉  来源: 博客园  发布时间: 2009-02-27 15:04  阅读: 6698 次  推荐: 0   原文链接   [收藏]   在WPF中我们可以使用Style来设置控件的某些 ...

  8. English trip -- FC(万词辩音王)

    五个元音字母+一个半元音字母 1.发字母本身音都是 元+辅+e 2.不发字母音基本都是辅音结尾或者两个相同字母  辅+元+辅;元+辅 开音节                              ...

  9. LeetCode--067--二进制求和

    问题描述: 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1&quo ...

  10. Confluence 6 为站点启用匿名用户访问

    如果你希望你的站点能够被所有人看到,包括不需要登录就可以访问的用户.你必须为你的站点启用匿名用户访问权限才可以. 希望启用匿名用户访问你的站点: 在屏幕的右上角单击 控制台按钮 ,然后选择 Gener ...