zoukankan      html  css  js  c++  java
  • url进行转义

    转义
    iOS9之前使用 CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding)这个方法
     
    参数解释
    allocator 表示为返回字符串的申请的内存,一般为null或kCFAllocatorDefault
    originalString 表示需要转义的字符串
    charactersToLeaveUnescaped 表示需要保留哪些字符不需要转义
    legalURLCharactersToBeEscaped 表示需要转义的字符
    encoding 表示需要转义的风格
     
    ios 9之后使用 - (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters 方法
    allowedCharacters 系统给了六种默认的风格
    URLFragmentAllowedCharacterSet  "#%<>[]^`{|}
    URLHostAllowedCharacterSet      "#%/<>?@^`{|}
    URLPasswordAllowedCharacterSet  "#%/:<>?@[]^`{|}
    URLPathAllowedCharacterSet      "#%;<>?[]^`{|}
    URLQueryAllowedCharacterSet    "#%<>[]^`{|}
    URLUserAllowedCharacterSet      "#%/:<>?@[]^`
    这些只是对`#%^{}[]|"<> 加空格共14个字符编码,不包括”&?”等符号,如果想要对“&?”进行编码就需要自己定义编码方式
    例如:
    NSCharacterSet *customAllowedSet = [[NSCharacterSet characterSetWithCharactersInString:@"!#$%&'()*+,/:;=?@[]"] invertedSet];
     
    具体使用:
    + (NSString*)encodeString:(NSString*)unencodedString {
       
        if([[[UIDevice currentDevice]systemVersion]floatValue] >=9.0) {
           
            NSCharacterSet *customAllowedSet = [[NSCharacterSet characterSetWithCharactersInString:@"!#$%&'()*+,/:;=?@[]"] invertedSet];
          NSString *encodeUrl = [unencodedString stringByAddingPercentEncodingWithAllowedCharacters:customAllowedSet];
            return encodeUrl;
           
        }
       
        NSString*encodedString = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)unencodedString,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));
       
        return encodedString;
    }
     
     
  • 相关阅读:
    laravel 汇总数据
    Sway
    利用 Windows API Code Pack 修改音乐的 ID3 信息
    Windows Server 2012 R2 设置 NTP 服务
    Visual Studio "14" CTPs
    Win8.1 查看 “Windows 体验指数“
    json2csharp & json 格式化
    山寨版 WP8.1 Cortana 启动 PC
    Newtonsoft.Json WindowPhone7.1
    Cisco交换机基础命令 + Win Server08 R2 多网卡配置链路聚合
  • 原文地址:https://www.cnblogs.com/banchuangshuying/p/9233074.html
Copyright © 2011-2022 走看看