在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的分类里面以便使用!
本文介绍在iOS开发过程中如何正确地对包含中文和其他特殊符号的URL进行编码,确保网络请求能够成功执行。文中对比了两种不同的编码方法,并推荐使用CFURLCreateStringByAddingPercentEscapes以覆盖更广泛的特殊字符。

被折叠的 条评论
为什么被折叠?



