iOS開發 URL編碼之對特殊符號的處理
阿新 • • 發佈:2019-01-03
在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的分類裡面以便使用!