美文网首页iOS-SDK开发
iOS Url 编码解码

iOS Url 编码解码

作者: 奇怪的知识增加了 | 来源:发表于2019-03-26 15:30 被阅读0次

为什么需要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];

友情链接

相关文章

网友评论

    本文标题:iOS Url 编码解码

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