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

版权归Aaidong所有〜转载需声名〜  欢迎大家访问:http://blog.csdn.net/aaidong

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

[objc]  view plain  copy
  1. <pre name="code" class="objc">  
[objc]  view plain  copy
  1. //  
  2. //  NSString+URL.h  
  3. //  
  4. //  Created by aidong on 15/5/8.  
  5. //  Copyright (c) 2015年 aidong. All rights reserved.  
  6. //  
  7.   
  8. /** 
  9.  *  url字符串中具有特殊功能的特殊字符的字符串,或者中文字符,作为参数用GET方式传递时,需要用urlencode处理一下。 
  10.  * 
  11.  *  例如:在 iOS 程序访问 HTTP 资源时,像拼出来的 http://unmi.cc?p1=%+&sd f&p2=中文,其中的中文、特殊符号&%和空格都必须进行转译才能正确访问。 
  12.  */  
  13.   
  14. /** 
  15.  *  调用示例: 
  16.         引入头文件:NSString+URL.h 
  17.   
  18.         // URLEncode 
  19.         NSString *unencodedString = @"cc?p1=%+&sd f&p"; 
  20.         NSString *encodedString = [unencodedString URLEncodedString]; 
  21.   
  22.         // URLDecode 
  23.         NSString *undecodedString = @"%25+&sd%20&p2=%E4%B8%AD%E6%96%87"; 
  24.         NSString *decodedString = [undecodedString URLDecodedString]; 
  25.  */  
  26.   
  27. #import <Foundation/Foundation.h>  
  28.   
  29. @interface NSString (URL)  
  30.   
  31. /** 
  32.  *  URLEncode 
  33.  */  
  34. - (NSString *)URLEncodedString;  
  35.   
  36. /** 
  37.  *  URLDecode 
  38.  */  
  39. -(NSString *)URLDecodedString;  
  40.   
  41. @end  
[objc]  view plain  copy
  1.   

 
[objc]  view plain  copy
  1. //  
  2. //  NSString+URL.m  
  3. //  
  4. //  Created by aidong on 15/5/8.  
  5. //  Copyright (c) 2015年 aidong. All rights reserved.  
  6. //  
  7.   
  8. #import "NSString+URL.h"  
  9.   
  10. @implementation NSString (URL)  
  11.   
  12. /** 
  13.  *  URLEncode 
  14.  */  
  15. - (NSString *)URLEncodedString  
  16. {  
  17.     // CharactersToBeEscaped = @":/?&=;+!@#$()~',*";  
  18.     // CharactersToLeaveUnescaped = @"[].";  
  19.       
  20.     NSString *unencodedString = self;  
  21.     NSString *encodedString = (NSString *)  
  22.     CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  
  23.                                                               (CFStringRef)unencodedString,  
  24.                                                               NULL,  
  25.                                                               (CFStringRef)@"!*'();:@&=+$,/?%#[]",  
  26.                                                               kCFStringEncodingUTF8));  
  27.       
  28.     return encodedString;  
  29. }  
  30.   
  31. /** 
  32.  *  URLDecode 
  33.  */  
  34. -(NSString *)URLDecodedString  
  35. {  
  36.     //NSString *decodedString = [encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];  
  37.       
  38.     NSString *encodedString = self;  
  39.     NSString *decodedString  = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,  
  40.                                                                                                                      (__bridge CFStringRef)encodedString,  
  41.                                                                                                                      CFSTR(""),  
  42.                                                                                                                      CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));  
  43.     return decodedString;  
  44. }  
  45.   
  46. @end  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值