iOS的 UrlEncode编码

作者: CarrieQ | 来源:发表于2017-05-09 11:58 被阅读3976次

首先写一个string类扩展 NSString +URL

.h文件里面这么写

//
//  NSString+URL.h
//  iOS_AES
//
//  Created by 琦琦 on 2017/5/8.
//  Copyright © 2017年 cong. All rights reserved.
//

/**
 *  url字符串中具有特殊功能的特殊字符的字符串,或者中文字符,作为参数用GET方式传递时,需要用urlencode处理一下。
 *
 *  例如:在 iOS 程序访问 HTTP 资源时,像拼出来的http://unmi.cc?p1=%+&sd f&p2=中文,其中的中文、特殊符号&%和空格都必须进行转译才能正确访问。
 */

/**
 *  调用示例:
 引入头文件:NSString+URL.h
 
 // URLEncode
 NSString *unencodedString = @"cc?p1=%+&sd f&p";
 NSString *encodedString = [unencodedString URLEncodedString];
 
 // URLDecode
 NSString *undecodedString = @"%25+&sd%20&p2=%E4%B8%AD%E6%96%87";
 NSString *decodedString = [undecodedString URLDecodedString];
 */

#import <Foundation/Foundation.h>

@interface NSString (URL)

/**
 *  URLEncode
 */
- (NSString *)URLEncodedString;

/**
 *  URLDecode
 */
-(NSString *)URLDecodedString;

@end

.m里面这么去实现

//
//  NSString+URL.m
//  iOS_AES
//
//  Created by 琦琦 on 2017/5/8.
//  Copyright © 2017年 cong. All rights reserved.
//

#import "NSString+URL.h"

@implementation NSString (URL)

/**
 *  URLEncode
 */
- (NSString *)URLEncodedString
{
    // CharactersToBeEscaped = @":/?&=;+!@#$()~',*";
    // CharactersToLeaveUnescaped = @"[].";
    
    NSString *unencodedString = self;
    NSString *encodedString = (NSString *)
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              (CFStringRef)unencodedString,
                                                              NULL,
                                                              (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                              kCFStringEncodingUTF8));
    
    return encodedString;
}

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

@end

调用已经在.h里面说明了,好了,拿去用吧!

相关文章

  • iOS的 UrlEncode编码

    首先写一个string类扩展 NSString +URL .h文件里面这么写 .m里面这么去实现 调用已经在.h...

  • iOS中urlencode

    iOS开发过程中有很多的编码,最近使用了urlencode编码,使用这个编码的主要作用是解决url中出现中文或者特...

  • iOS UTF-8编码/解码 UrlEncode编码/解码

    UTF-8编码/解码 UrlEncode编码/解码 ///> 区别

  • get和post

    urllib.parse.urlencode() 编码工作使用urllib.parse模块下的urlencode(...

  • 在postman脚本中进行urlencode编码

    进行urlencode编码 在进行接口测试的过程中,一部分接口的参数需要做urlencode编码,如果将传输的参数...

  • 常用网站

    UrlEncode编码/UrlDecode解码 - 站长工具 Base64编码/解码器 在线解码

  • Python 爬虫笔记2一(编码转码urlencode与unqu

    当url地址含有中文或者“/”的时候,这是就需要用做urlencode一下编码转换。 一、urlencode ur...

  • urlencode库编码

    在学习Python爬虫的时候,有疑惑urllib中的urlencode()编码吧 ,其实就是模拟浏览器发送数据,因...

  • 01 网络请求

    urlopen urlretrieve urlencode参数编码 parse_qs解码 urlparse Pro...

  • URLencode编码简析

    urlEncode:<1>·定义:百分号编码(英语:Percent-encoding), 也称作URL编码(英语:...

网友评论

    本文标题:iOS的 UrlEncode编码

    本文链接:https://www.haomeiwen.com/subject/afvbtxtx.html