Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS字符串编码与解码方法的实现与调用(UrlEncode/UrlDecode)

iOS字符串编码与解码方法的实现与调用(UrlEncode/UrlDecode)

作者头像
陈满iOS
发布于 2018-09-10 03:09:17
发布于 2018-09-10 03:09:17
3K00
代码可运行
举报
文章被收录于专栏:陈满iOS陈满iOS
运行总次数:0
代码可运行

1.本编解码方法的功能说明

  • UrlEncode方法 把任何参数转换成适合放在URL中的字符串。具体规则:

  1. 字母,数字,连字符不变。
  2. 空格转换成加号
  3. 其他所有的字符转换成用百分号表示,并接上字符的两位十六进制编码。如%2F
  • UrlDecode方法 其功能与编码相反

2. 字符串在编码之前之后的效果

原字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Vk/nQmguwJIN

编码之后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Vk%2FnQmguwJIN

解码之后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Vk/nQmguwJIN

3.UrlEncode/UrlDecode方法的实现

编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+(NSString*)encodeString:(NSString*)unencodedString{
    
    // CharactersToBeEscaped = @":/?&=;+!@#$()~',*";
    // CharactersToLeaveUnescaped = @"[].";
    
    NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              (CFStringRef)unencodedString,
                                                              NULL,
                                                              (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                              kCFStringEncodingUTF8));
    
    return encodedString;
}

解码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//URLDEcode
+(NSString *)decodeString:(NSString*)encodedString

{
    //NSString *decodedString = [encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];
    
    NSString *decodedString  = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,(__bridge CFStringRef)encodedString,CFSTR(""),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
    return decodedString;
}

4.使用建议

建议自己写个Category。比如,可以基于NSString新建一个URLEncoding类别文件,类名分别为NSString+URLEncoding.h和NSString+URLEncoding.m。然后,在你需要的地方导入该头文件即可。作为对比,与上面的实现不同,下面采用replaceOccurrencesOfString:方法实现解码功能。

其中: NSString+URLEncoding.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import <Foundation/Foundation.h>

@interface NSString (URLEncoding)

// 字符串转码
- (NSString*)urlEncodeString;

// 反URL编码
- (NSString *)decodeFromPercentEscapeString;

@end

NSString+URLEncoding.m

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import "NSString+URLEncoding.h"

@implementation NSString (URLEncoding)

// 字符串编码
- (NSString *)urlEncodeString
{
    NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, NULL, CFSTR(":/?#[]@!$&’(){}<>*+,;="),kCFStringEncodingUTF8));
    return result;
}

// 反URL编码
- (NSString *)decodeFromPercentEscapeString
{
    NSMutableString *outputStr = [NSMutableString stringWithString:self];
    [outputStr replaceOccurrencesOfString:@"+"
                               withString:@" "
                                  options:NSLiteralSearch
                                    range:NSMakeRange(0, [outputStr length])];
    
    return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

5. 调用范例

在调用处的类中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import "NSString+URLEncoding.h"

然后,调用上述方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[testStr urlEncodeString];

即可。

参考文献

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.06.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS-URLEncode和URLDecode
// urlencode - (NSString *)urlEncodedString { NSString *encodedString = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self,
czjwarrior
2018/05/28
3.3K0
iOS 防止反编译加密方法
对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取数据, 使用MD5加密。 把一个任意长度的字节串变换成一定长度的十六进制的大整数。
网罗开发
2021/01/29
1.4K0
iOS 防止反编译加密方法
iOS的NSString总结
1.常用功能使用 1)初始化 NSString *astring = @"This is a String!";                             //固定字符串 NSString *str = [NSString stringWithFormat:@"asd%d%@",123,@"ttt"];    //拼组字符串 2)截取 NSString *str = [@"asd" substringFromIndex:1];                       //从第几位开始截到
用户8983410
2021/10/31
5820
iOS webView error 101 加载不出网页
      因为业务需要,我要在第一个webview截获一个url,这个url有js调oc传的参数,然后在另一个webview里进行加载,这时候出现错误101。
星宇大前端
2019/01/15
1.2K0
iOS中url的特殊字符转换
一般来说我们调用webVIew的时候,只要给webVIew传一个url,在网页里面就可以显示网页信息。但是当我们传的url比较麻烦或者带文字符,带参数的时候我们需要对特殊字符进行转义。我们还可以用遍历,正则等来把特殊字符给替换掉!!
好派笔记
2021/10/29
3.6K0
iOS:URL 特殊字符 # UTF-8
1.URL 加载过程中,出现汉字乱码 ---- NSString* urlstr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 2.链接中包含特殊字符,1方法,会导致特殊字符也进行转码,所以用以下方法 ---- self.url = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorD
菜菜不吃蔡
2019/03/06
1.3K0
iOS中URL编码那些事
在iOS程序中,访问一些HTTP/HTTPS的资源服务时,如果url中存在中文或者特殊字符时,会导致无法正常的访问到资源或服务,想要解决这个问题,需要对url进行编码。
freesan44
2018/09/05
2.8K0
iOS开发之CFHttpMessageRef的那些坑
在上一篇文章iOS开发之NSURLProtocol的那些坑中,介绍了一些NSURLProtocol使用过程中可能遇到的问题,今天我们就接着说CFHttpMessageRef。 或许你还没用过CFHttpMessageRef,应该说还没遇到需要使用这个的场景,当然,老司机就另当别论了。这是个iOS系统中非常底层的网络通讯接口,已经接近于UNIX系统的socket通信了,使用CFHttpMessageRef进行HTTP连接的好处就是控制的粒度更细了,例如你可以设置SSL连接的PeerName,证书验证的方式,还
forrestlin
2018/05/24
2.3K0
iOS中解码.txt文件在UIWebView出现中文乱码的问题
1,什么是gbk和utf-8编码? 2,GBK与UTF-8的区别? 1,GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。 2,GBK包含全部中文字符; UTF8是国际编码,它的通用性比较好,UTF-8则包含全世界所有国家需要用到的字符。 GBK是国家编码,通用性比UTF8
rectinajh
2018/05/17
3.7K0
一种避免 iOS 内存碎片的方法
QQ音乐技术团队
2017/10/24
2.4K0
一种避免 iOS 内存碎片的方法
Core Foundation & Foundation
Core Foundation 是一组 C 语言接口,Foundation 用 Objective-C 封装了 Core Foundation 的 C 组件,并实现了额外了组件供开发人员使用。而 Core Foundation 也有一些 Foundation 没能彻底封装的功能,这些功能是 Core Foundation 特有的。Core Foundation 有 Foundation 没有的功能,比如 CFDictionary 的 Key 元素无需实现 NSCoping 协议、CFArray 可以不进行对象引用计数等、CFRunloop 提供了比 NSRunloop 更加细致化的 Api、利用 CFStringTransform 将中文转为拼音。反过来,Foundation 也有 Core Foundation 无法胜任的工作,最大的来说就是自动引用计数功能,还有比如 NSBundle 在 Core Foundation 中也没有。
CoderStar
2022/08/24
5880
Core Foundation & Foundation
ios 接收 c# socket udp 组播
最近用wcf 服务 给ios和安卓做接口,做了几个ios的项目  用udp 组播 让ios多终端接收和刷新方法 做一个简单的小例子会把工程给大家下载的   c#代码:netSocketUDP.rar      ios代码:MyIOSSocketDemo.rar 先用c#做发送 组播IP范围为 224.0.0.0~239.255.255.255 建一个控制台应用程序 private static IPAddress GropuAddress = IPAddress.Parse("224.0.0.2");//I
lpxxn
2018/01/31
2.5K0
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建
    在CoreGraphics框架中,有两个类型与PDF文档的渲染有关,分别为CGPDFDocumentRef与CGPDFPageRef。其中,CGPDFDocumentRef对应整个PDF文档,里面封装了许多文档相关的信息,CGPDFPageRef对应PDF文档中某一页的内容,通过它开发者可以将PDF内容通过CGContext上下文渲染到指定目标上。
珲少
2018/08/15
1.4K0
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建
OC知识--Foundation框架详尽总结之『字符串类』
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Foundation-String.html 本文对Foundation框架中的字符串类(NSString、NSMutableString)的使用做一个详细的总结。 1. NSString 1. NSString介绍 Foundation框架支持一个名为NSString的类,用于处理字符串对象,由unichar字符组成。 一个NSString对象就代表一个字符
程序员充电站
2018/05/31
7000
iOS的各种加密方法使用简介
<pre name="code" class="objc"><span style="font-size:18px;color:#cc0000;background-color: rgb(204, 204, 204);">本文主要记载了本文在以往工作中涉及到得加密方式记载以便以后使用:在以往的工作中我们iOS客户端的加密主要应用于接口参数传递安全、二维码信息加密、签名验证等等,不同的应用应该采用不同的加密方法比如支付宝RSA加密,公私钥匹配的模式,微信支付sha1和md5加密都是对于支付来说很安全的,具体
星宇大前端
2019/01/15
1.2K0
【IOS开发基础系列】数据编解码专题
NSData* originData = [originStr dataUsingEncoding: NSASCIIStringEncoding];
江中散人_Jun
2022/03/08
8400
iOS引用转换:Foundation与Core Foundation对象互相转换(__CFString转NSString,void *转id等等)
下载地址:苹果公开的源代码在这里可以下载,https://opensource.apple.com/tarballs/
陈满iOS
2018/09/10
2.3K0
iOS引用转换:Foundation与Core Foundation对象互相转换(__CFString转NSString,void *转id等等)
OC基础--字符串
做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱。所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础、UI控件、多线程、动画、网络、数据持久化、自动布局、第三方框架等几个模块进行梳理。本系列的所有博文集合参见:iOS开发知识梳理博文集。本文主要介绍 OC基础--字符串。
mukekeheart
2020/09/07
1K0
iOS开发中上传JSON字符串到后台服务器
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/72457751
用户1451823
2018/09/13
1.6K0
两种方法操作其它mac应用的窗口
(图文基本无关) 如果单纯说简单方便,其使用AppleScript更好,特别是现在有了JS的加入,比如: (* This Apple script will resize any program window to an exact size and the window is then moved to the center of your screen. Specify the program name, height and width below and run the script. Wri
俺踏月色而来
2018/06/20
1.9K0
相关推荐
iOS-URLEncode和URLDecode
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验