url编码

作者: xiari1991 | 来源:发表于2018-02-09 11:24 被阅读37次

为什么要进行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];

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

相关文章

网友评论

      本文标题:url编码

      本文链接:https://www.haomeiwen.com/subject/zzrftftx.html