前言
编码:将不能用于url请求(get)的字符转为百分号编码的字符;
解码:将百分号编码的字符转为对应的字符串;
实践
例子:NSString *a = @"https://t.bd.cn/td?title=测试&img=http://f.bd.cn/20_05(fn).png?w=3&h=4";
编码:
NSString *encodedString = [src stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "].invertedSet];
//invertedSet:表示取相反的集合,作为允许的不需要转码的字符
输出:https%3A%2F%2Ft.bd.cn%2Ftd%3Ftitle%3D%E6%B5%8B%E8%AF%95%26img%3Dhttp%3A%2F%2Ff.bd.cn%2F20_05%28fn%29.png%3Fw%3D3%26h%3D4
解码:
方法1:NSString*decodedString = (__bridge_transferNSString*)CFURLCreateStringByReplacingPercentEscapes(NULL, (__bridgeCFStringRef)encodedString,CFSTR(""));
方法2:NSString*decodedString = [encodedString stringByRemovingPercentEncoding];
输出:
https://t.bd.cn/td?title=测试&img=http://f.bd.cn/20_05(fn).png?w=3&h=4
扩展
可以写到NSString的分类中,这样便于复用代码