变更记录
序号 | 录入时间 | 录入人 | 备注 |
---|---|---|---|
1 | 2016-01-18 | Alfred Jiang | - |
方案名称
NSURL - 特殊字符处理
关键字
NSURL \ 特殊字符 \ 参数 \ 请求
需求场景
- 针对某些带有特殊字符的 URL 无法正确请求数据的场景
参考链接
详细内容
iOS 9 之前
方法一 : CFURLCreateStringByAddingPercentEscapes
NSString *UrlEncodedString(NSString *sourceText)
{
NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)sourceText ,NULL ,CFSTR("!*'();@&+$?%#[]") ,kCFStringEncodingUTF8));// ", / : ="
return result;
}
使用
NSString *str = @"http://img5.imgtn.bdimg.com/it/u=1478257864,2882073929%26fm=21%26gp=0.jpg";
NSString *urlStr = UrlEncodedString(str);
方法二 : stringByAddingPercentEscapesUsingEncoding
NSString *str = @"http://img5.imgtn.bdimg.com/it/u=1478257864,2882073929%26fm=21%26gp=0.jpg";
NSString *urlStr = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
iOS 9 之后
使用 stringByAddingPercentEncodingWithAllowedCharacters
NSString *str = @"http://img5.imgtn.bdimg.com/it/u=1478257864,2882073929%26fm=21%26gp=0.jpg";
NSString *urlStr = [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
以上三种方法转换结果都是一样的:
(lldb) po urlStr
http://img5.imgtn.bdimg.com/it/u=1478257864,2882073929%2526fm=21%2526gp=0.jpg
效果图
(无)
备注
(无)