有的時候,我們需要將 URL encode,在 iOS 底下有這個函式可以使用
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
可是這個函式 有個 bug ,所以若是它不能符合你的需求,那就得自己處理啦。
如果你有使用 Nimbus 的話,在 NSString+NimbusCore.h
裡頭有個 - (NSString *)stringByAddingPercentEscapesForURLParameter
可以幫忙正確將 URL 做 UTF8 Encoding。如果你沒有用 Nimbus,那就只好自己寫一個啦,底下的程式碼是從 NSString+NimbusCore.m 複製過來的。
/**
* Returns a string that has been escaped for use as a URL parameter.
*/
- (NSString *)stringByAddingPercentEscapesForURLParameter {
CFStringRef buffer =
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(__bridge CFStringRef)self,
NULL,
(__bridge CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
NSString *result = [NSString stringWithString:(__bridge NSString *)buffer];
CFRelease(buffer);
return result;
}