美文网首页
ios开发-URL编码

ios开发-URL编码

作者: 命运建筑师fly | 来源:发表于2017-09-14 16:55 被阅读0次

    需求:

    在使用NSURLRequest 进行http的网络访问的时候,如果(http://xxx.xxx.xx?xx=xx&xx=你好)请求参数中有中文的话,需要对字符串进行一次编码,否则你使用字符串创建NSURL的时候,返回的是空(就是这么变态)

    解决方案:

    1、方法一:
    对url字符串通过添加百分比编码与允许字符集

    NSString *ur = @"http://120.25.226.186:32812/login2?username=帅哥&pwd=520it&type=JSON";
    NSURL *url = [NSURL URLWithString:[ur stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];//URL查询允许的字符集
    

    NSCharacterSet 新增枚举

    URLUserAllowedCharacterSet      "#%/:<>?@[\]^`
    
    URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}
    
    URLHostAllowedCharacterSet      "#%/<>?@\^`{|}
    
    URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}
    
    URLQueryAllowedCharacterSet     "#%<>[\]^`{|}
    
    URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}
    

    2、方法二
    使用字符来编码

      //第一种方式:
        NSString *string = @"https://www.baidu.com/中国/iOS";
        string = [string  stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet];
        NSLog(@"%@",string);
    

    3、方法三
    使用utf8编码来实现

    NSString *string = @"https://www.baidu.com/中国/iOS";
     string = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    输出的结果

    https://www.baidu.com/%E4%B8%AD%E5%9B%BD/iOS
    

    解码方式

    NSString* string7 = [string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    输出:https://www.baidu.com/中国/iOS
    

    使用场景:

    1、ios中带有中文字符的请求链接地址;
    2、欢迎指正、交流。

    相关文章

      网友评论

          本文标题:ios开发-URL编码

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