ios开发-URL编码

需求:

在使用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编码)