URL出现特殊字符时的处理

遇到一个问题,webview加载一段URL显示不了,URL是正确的,后来发现url路劲里有个#号,打印的时候被转义了,导致页面显示不出来,特意去网上找了下资料,记录下:

stringByAddingPercentEscapesUsingEncoding
该方法只对 `#%^{}[]|\"<> 加空格共14个字符编码,不包括”&?”等符号,
iOS9将淘汰,建议用stringByAddingPercentEncodingWithAllowedCharacters方法

stringByAddingPercentEncodingWithAllowedCharacters方法需要传一个参数NSCharacterSet对象。
关于 NSCharacterSet 这篇 文章说的很好

NSCharacterSet举例说明:

URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}

URLHostAllowedCharacterSet      "#%/<>?@\^`{|}

URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}

URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}

URLQueryAllowedCharacterSet     "#%<>[\]^`{|}

URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

当URL里有特殊字符不需要转义时,处理方法:

NSString *unreserved = @"-._~/?#:";
NSMutableCharacterSet *allowed = [NSMutableCharacterSet alphanumericCharacterSet];
[allowed addCharactersInString:unreserved];
NSString *result = [string stringByAddingPercentEncodingWithAllowedCharacters:allowed];

参考:https://www.jianshu.com/p/21a21866e379

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、问题背景 相信很多ios开发者在项目中都需要用到uiwebview,那就离不开url了,一般符合网络标准的...
    FuWees阅读 7,062评论 1 6
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,848评论 25 708
  • 一、 为了增大自己能找到女朋友的可能性,小明同时向四个中文系的女生表白了。她们在面对小明势不可挡的热情时都表示要好...
    秦三十二阅读 490评论 0 2
  • swift中?和!大家可能都知道是可空类型 optional ,也叫可选类型 这样做是为了类型安全,比如声明一个对...
    smalldu阅读 1,535评论 1 8
  • 文/my 彩色沙漠 在豆瓣上看到有人问:工作以后能交到真正的朋友吗? 很多人回答是:几乎不能。 有人说,朋友在80...
    my彩色沙漠阅读 2,057评论 4 12