【发布时间】:2014-06-26 09:38:43
【问题描述】:
我正在调用 API,有时我的查询参数包含一个 & 符号。例如参数可能是name=Billy & Bob。
当我创建网址时,我使用:
NSString *url = [NSString stringWithFormat:@"%@/search/%@?name=%@&page=%d", [Statics baseURL], user_id, [term urlEncodeUsingEncoding:NSUTF8StringEncoding], page];
NSURL *fullURL = [NSURL URLWithString:[url stringWithAccessToken]];
我用这种方法对 url 进行编码:
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
CFStringConvertNSStringEncodingToEncoding(encoding)));
}
问题是,& 符号通过urlEncodeUsingEncoding 方法正确编码,然后URLWithString 方法再次编码字符串,并用@987654327 替换字符串中创建的% 符号@。
任何人都知道如何编码包含&符号的查询参数?
【问题讨论】:
标签: ios objective-c utf-8 nsurl