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;
}
 
 

转载于:https://www.cnblogs.com/banchuangshuying/p/9233074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值