如何在NSURL中进行网址编码?
由于
答案 0 :(得分:27)
您可以使用stringByAddingPercentEscapesUsingEncoding:
NSString* escapedUrlString =
[unescapedString stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];
但是,根据我的经验,这种方法并不完美(在处理一些保留字符时),在很多情况下我需要使用变体:
NSString * escapedUrlString =
(NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)unescapedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
答案 1 :(得分:6)
stringByAddingPercentEscapesUsingEncoding:有一些problems with URL arguments。
我将Google Toolbox for Mac中的 gtm_stringByEscapingForURLArgument 用于网址参数。
答案 2 :(得分:3)
这对我有用:
NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:[url stringByAddingPercentEscapesUsingEncoding:STRING_ENCODING_IN_THE_SERVER]]
encoding:STRING_ENCODING_IN_THE_SERVER
error:&error];