[NSURLURLWithString:urlString]生成URL對(duì)象時(shí),iOS客戶端不能正確進(jìn)行網(wǎng)絡(luò)請(qǐng)求,網(wǎng)上找到的URLEncode方法又不能完全解決問(wèn)題.
方法1:
NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
方法2:
NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);
這兩種方法當(dāng)urlString里含有中文時(shí)URL編碼是正確的,但是如果其中含有已轉(zhuǎn)義的%等符號(hào)時(shí),又會(huì)再次轉(zhuǎn)義而導(dǎo)致錯(cuò)誤.
查看方法2參數(shù)說(shuō)明:
CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator,CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped,CFStringEncoding encoding);
因此做出修改,寫(xiě)出方法:
NSString *encodedString = (NSString *)
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)urlString,
(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",
NULL,
kCFStringEncodingUTF8);