[NSURLURLWithString:urlString]生成URL對象時,iOS客戶端不能正確進行網絡請求,網上找到的URLEncode方法又不能完全解決問題.
方法1:
NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
方法2:
NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);
這兩種方法當urlString里含有中文時URL編碼是正確的,但是如果其中含有已轉義的%等符號時,又會再次轉義而導致錯誤.
所以在此推薦使用以下方法:
+ (NSString *)encodeUrlStr:(NSString *)urlStr{
NSString *encodedString = (NSString *)
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)urlStr,
(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",
NULL,
kCFStringEncodingUTF8));
return encodedString;
}