带有特殊字符的NSURL编码

时间:2014-05-11 00:53:36

标签: ios encoding nsurl

我正在尝试使用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?

1 个答案:

答案 0 :(得分:2)

请参阅NSString stringByAddingPercentEscapesUsingEncoding:您应该使用CFURLCreateStringByAddingPercentEscapes来自定义要转义的字符。

- (NSString *) urlencodeStr:(NSString *)str
{
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
                                                                                 NULL,
                                                                                 (__bridge CFStringRef) str,
                                                                                 NULL,
                                                                                 CFSTR("!*'();:@+$,/?%#[]"),
                                                                                 kCFStringEncodingUTF8));
}

CFSTR("!*'();:@+$,/?%#[]")包含将被转义的字符。