ios通过下面系统方法进行url编解码
1.url编码:
NSString * encodingString = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
2.url解码:
NSString *str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
但是,上面两个系统方法:
编码,不会对于特殊字符进行处理的。比如"!*'();:@&=+$,/?%#[]"。
解码,不会"+"就需要我们做特殊处理。如下方法
3.自定义编码:
- (NSString *)encodeToOriginalString: (NSString *) {
NSString* outputStr = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL, /* allocator */
(__bridge CFStringRef)input,
NULL, /* charactersToLeaveUnescaped */
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
return outputStr;
}
- (NSString *)decodeFromOriginalString: (NSString *) input{
NSMutableString *outputStr = [NSMutableString stringWithString:input];
[outputStr replaceOccurrencesOfString:@"+"withString:@""
options:NSLiteralSearch
range:NSMakeRange(0,[outputStr length])];
return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}