您的位置:首页 > 移动开发 > Objective-C

iOS开发中Objective-C 对 URL的URLEncode(编码)与URLDecode(解码)

2017-10-17 15:51 411 查看
版权归Aaidong所有〜转载需声名〜  欢迎大家访问:http://blog.csdn.net/aaidong

废话不多说,直接上代码。

[objc] view
plain copy

<pre name="code" class="objc">  

[objc] view
plain copy

//  

//  NSString+URL.h  

//  

//  Created by aidong on 15/5/8.  

//  Copyright (c) 2015年 aidong. 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  

[objc] view
plain copy

  



[objc] view
plain copy

//  

//  NSString+URL.m  

//  

//  Created by aidong on 15/5/8.  

//  Copyright (c) 2015年 aidong. 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  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: