url编码
2018-02-09 本文已影响37人
xiari1991
为什么要进行URL编码
NSString *originalUrl = @"https://www.xingshulin.com我是中文?p1=abc&p2=我是参数2_[?&";
NSCharacterSet *encodeUrlSet = [NSCharacterSet URLQueryAllowedCharacterSet];
NSString *encodeUrl = [originalUrl stringByAddingPercentEncodingWithAllowedCharacters:encodeUrlSet];
NSLog(@"%@", encodeUrl);
编码是对url中的中文和特殊符号进行编码。对url编码其实就是对一些特殊字符进行使用utf8编码.
那么我们平时使用的url都要对那些特殊字符编码呢?
/**
URLUserAllowedCharacterSet "#%/:<>?@[\]^`
URLPasswordAllowedCharacterSet "#%/:<>?@[\]^`{|}
URLHostAllowedCharacterSet "#%/<>?@\^`{|}
URLPathAllowedCharacterSet "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet "#%<>[\]^`{|}
URLFragmentAllowedCharacterSet "#%<>[\]^`{|}
*/
我们一般对URLQueryAllowedCharacterSet包含的字符进行编码。就是这些字符出现的url中,都会进行utf8编码的。
当然我们也可以自定义需要编码的字符集,如:
NSString *urlString = @"https://www.baidu.com?name=23r";
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"`#^{}\"[]|\\<>"].invertedSet;
NSString *urlStringEncoding = [urlString stringByAddingPercentEncodingWithAllowedCharacters:set];
意思是`#^{}"[]|\<> 这些字符是要编码的。