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

意思是`#^{}"[]|\<> 这些字符是要编码的。

上一篇下一篇

猜你喜欢

热点阅读