zoukankan      html  css  js  c++  java
  • iOS下URL编码

    使用NSString默认的URL编码,会对汉字等进行转义,但是对=+等这些字符不会进行转义

    所以要手动实现这些字符的转义

    - (NSString *)encodeToPercentEscapeString: (NSString *) input  
    {  
        // Encode all the reserved characters, per RFC 3986  
        // (<http://www.ietf.org/rfc/rfc3986.txt>)  
        NSString *outputStr = (NSString *)   
        CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  
                                                (CFStringRef)input,  
                                                NULL,  
                                                (CFStringRef)@"!*'();:@&=+$,/?%#[]",  
                                                kCFStringEncodingUTF8);  
        return outputStr;  
    }  
      
    - (NSString *)decodeFromPercentEscapeString: (NSString *) input  
    {  
        NSMutableString *outputStr = [NSMutableString stringWithString:input];  
        [outputStr replaceOccurrencesOfString:@"+"  
                                   withString:@" "  
                                      options:NSLiteralSearch  
                                        range:NSMakeRange(0, [outputStr length])];  
      
        return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
    }  

    测试代码

    NSString * testUrl      = @"http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]";  
    NSLog(@"original: %@", testUrl);  
      
    NSString * encodeStr    = [self encodeToPercentEscapeString:testUrl];  
    NSLog(@"encoded: %@", encodeStr);  
      
    NSString * encodeStr2   = [testUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
    NSLog(@"encoded2:%@", encodeStr2);  
      
    NSString * decodeStr    = [self decodeFromPercentEscapeString:encodeStr];  
    NSLog(@"decoded: %@", decodeStr);  

    结果

    >> original: http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]  
    >> encoded:  http%3A%2F%2Fsearch.google.com%3Fkeywords%3D%28%24%23%20it%27s%20%7Ba%2A123%7D%2900%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D  
    >> encoded2: http://search.google.com?keywords=($%23%20it's%20%7Ba*123%7D)00!*'();:@&=+$,/?%25%23%5B%5D  
    >> decoded:  http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[] 

    转自:http://blog.csdn.net/kesalin/article/details/6678939

  • 相关阅读:
    大型网站架构演化发展历程
    用Haproxy给MySQL做负载均衡
    一致性hash和虚拟节点
    Apache + Tomcat +mod_jk 实现集群
    浅谈时钟的生成(js手写代码)
    javascript
    vue-cli中安装方法
    webstorm激活
    解决webstorm卡顿问题
    gulp前端自动化环境搭建详解
  • 原文地址:https://www.cnblogs.com/xyzaijing/p/3951365.html
Copyright © 2011-2022 走看看