需求:
在使用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、欢迎指正、交流。