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编码

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