iOS开发 URL编码之对特殊符号的处理

       在iOS开发的过程中,我们在网络请求以及加载webView的时候都会用到URL, 众所周知如果URL会含有中文会识别不了,这样我们就要对URL进行编码!

     苹果给我们提供的方法,也是我们经常用的方法是:stringByAddingPercentEscapesUsingEncoding

    

    
    NSString *url = @"http://njkh.g.test.guha-inc.com/434?city=上海";
    url =  [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    ok,这样处理一下我们用url去做网络请求是可以成功的! 但是如果在url中加一些特殊的符号比如  /?#[]@!$&’()*+,;=

   再用stringByAddingPercentEscapesUsingEncoding: 来编码url请求就没办法成功!


     原因:stringByAddingPercentEscapesUsingEncoding没用对特殊符号进行编码处理;

     解决方法: 用CFURLCreateStringByAddingPercentEscapes来对URL进行编码,

- (id)urlEncoded {
  CFStringRef cfUrlEncodedString = CFURLCreateStringByAddingPercentEscapes(NULL,
                                            (CFStringRef)self,NULL,
                                            (CFStringRef)@"!#$%&'()*+,/:;=?@[]",
                                            kCFStringEncodingUTF8);

  NSString *urlEncoded = [NSString stringWithString:(NSString *)cfUrlEncodedString];
  CFRelease(cfUrlEncodedString);
  return urlEncoded;
}

  这样就可以对特殊符号 /?#[]@!$&’()*+,;=进行编码了!

  建议: 对URL编码直接用第二中方法,并把第二种方法写到NSString的分类里面以便使用!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值