为什么需要URL编码
- URL中有些字符会引起歧义
- 例如:URL参数字符串中使用键值对(key=value)的方式来传参,键值对之间以&符号分隔,因此键值中的&符号必须进行编码
- URL的编码格式采用的是ASCII码,而不是Unicode
- URL中不能包含任何非ASCII字符,例如中文
URL编码、解码
- URL编码的原则
- 就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符
- 中文、空格字符编码
- stringByAddingPercentEscapesUsingEncoding(只对 `#%^{}[]|\”<> 加空格共14个字符编码,不包括”&?”等符号)
- stringByAddingPercentEncodingWithAllowedCharacters( ios9)
NSString * resourcePath = @"https://www.baidu.com/文件夹"
// 编码
(iOS9.0以下使用)
NSString *str3 =[resourcePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
(iOS9.0以及以上使用)
NSString *str3 =
[resourcePath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSString *str3 =
[resourcePath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<>"].invertedSet];
- 中文、空格字符解码
- stringByReplacingPercentEscapesUsingEncoding
- stringByRemovingPercentEncoding (ios9)
NSString * resourcePath = @"https://www.baidu.com/文件夹";
// 解码
(iOS9.0以下使用)
NSString *str2 = [resourcePath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
(iOS9.0以及以上使用):
NSString *str2 = [resourcePath stringByRemovingPercentEncoding];
友情链接
网友评论