由於url支持26個英文字母、數字和少數幾個特殊字符,因此,對於url中包含非標准url的字符時,就需要對其進行編碼。iOS中提供了函數stringByAddingPercentEscapesUsingEncoding對中文和一些特殊字符進行編碼,但是stringByAddingPercentEscapesUsingEncoding的功能並不完善,對一些較為特殊的字符無效。而對這些字符則可以使用CFURLCreateStringByteAddingPercentEscapes函數,下面我們對其進行封裝,提供一個完善的url編碼函數。
NSString* encodeURL(NSString* unescapedString ) {
NSString* escapedUrlString= (NSString*) CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)unescapedString, NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 );
escapedUrlString = [escapedUrlString stringByAddingPercentEscapesUsingEncoding:kCFStringEncodingUTF8];
return [escapedUrlString autorelease];
}
需要特別注意的是encodeURL只能用來對url中的component編碼,不能用來對整個url進行編碼。