原文:http://blog.csdn.net/lwjok2007/article/details/47023853
iOS 涉及網(wǎng)絡(luò)編程的時候就需要與服務(wù)器存在httpurl 交互
如果說url中存在漢字棋弥,或者需要上傳圖片存和,那么就得考慮urlEncode(否則會出現(xiàn)網(wǎng)址不對)
同樣接收到服務(wù)器返回的一些信息可能也存在同樣問題,這時服務(wù)器可能會返回urlEcode,客戶端就需要解碼urlDecode
其實方法很簡單,只需創(chuàng)建如下兩個方法即可
編碼 URLEncodedString
[objc] view plain copy
-(NSString *)URLEncodedString:(NSString *)str
{
NSString *encodedString = (NSString )
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)str,
NULL,
(CFStringRef)@"!'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
return encodedString;
}
解碼 URLDecodedString
[objc] view plain copy
-(NSString *)URLDecodedString:(NSString *)str
{
NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return decodedString;
}
調(diào)用方法:
[objc] view plain copy
NSString *readyEcodeStr=@"adsfa asdfa s+asdf";//準備urlecode的字符串
NSString *ecodeStr=[self URLEncodedString:readyEcodeStr];
NSLog(@"readyEcodeStr=%@ ecodeStr=%@",readyEcodeStr,ecodeStr);
打印出來的log如下:
readyEcodeStr=adsfa asdfa s+asdf
ecodeStr=adsfa%20asdfa%20s%2Basdf