我正在尝试使用NSURL向以下内容提交请求:
http://api.allsaints.com/v1/product/?category=Women针织品
将此网址放入带有'的浏览器中以及类别中的空格,浏览器(chrome)正在将请求修改为:
http://api.allsaints.com/v1/product/?category=Women%27s%20Knitwear有效。
但是,我无法在iOS上获得正确的编码作为NSURL和NSDATA请求的一部分。我尝试使用stringByAddingPercentEscapesUsingEncoding进行各种编码来规范化URL但它仍然失败。
有人能指出我正确的方向编码,不仅将空间交换到%20,而且还交换了'到%27?
答案 0 :(得分:2)
请参阅NSString stringByAddingPercentEscapesUsingEncoding:
您应该使用CFURLCreateStringByAddingPercentEscapes
来自定义要转义的字符。
- (NSString *) urlencodeStr:(NSString *)str
{
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
NULL,
(__bridge CFStringRef) str,
NULL,
CFSTR("!*'();:@+$,/?%#[]"),
kCFStringEncodingUTF8));
}
CFSTR("!*'();:@+$,/?%#[]")
包含将被转义的字符。