在iOS
1、stringByAddingPercentEncodingWithAllowedCharacters的使用
- (NSString*)stringByAddingPercentEsc
来对完整的
NSString *url=@"http://unmi.cc?p1=%+&sd &p2=中文";
NSString *encodedValue = [url stringByAddingPercentEsc apesUsingEncoding:NSUTF8StringEncoding];
上面代码转换出的
http://unmi.cc?p1=%+&sd &p2=中文
可见,它不会转换
但是我们可以多一步处理,这样就可以通过stringByAddingPercentEncodingWithAllowedCharacters也实现把?%& 转换为UTF-8格式,如下:
NSString *url=@"http://unmi.cc?p1=%+&sd &p2=中文";
NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:
url
]
invertedSet
];
NSString *encodedUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters]; NSLog(@"\n%@",encodedUrl);
2、CFURLCreateStringByAddingPercentEscapes的使用
NSString *param = @"%+&sd f";
// NSString *encodeValue = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)utf8Str, NULL, NULL, kCFStringEncodingUTF8 ));
NSString *encodedValue = (NSString*)CFURLCreateStringByAddin这样编码出来的gPercentEscapes(nil, (CFStringRef)param, nil,(CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8);
我实际应用时还是这个