1. 程式人生 > >iOS開發 URL編碼之對特殊符號的處理

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)@"!#$%&'()*+,/:;
[email protected]
[]", kCFStringEncodingUTF8); NSString *urlEncoded = [NSString stringWithString:(NSString *)cfUrlEncodedString]; CFRelease(cfUrlEncodedString); return urlEncoded; }

  這樣就可以對特殊符號 /?#[]@!$&’()*+,;=進行編碼了!

  建議: 對URL編碼直接用第二中方法,並把第二種方法寫到NSString的分類裡面以便使用!