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