【发布时间】:2009-11-17 13:43:49
【问题描述】:
如何在 NSURL 中进行 URL 编码?
谢谢
【问题讨论】:
-
现在使用 iOS 7 更容易:stackoverflow.com/questions/3423545/…
标签: cocoa
如何在 NSURL 中进行 URL 编码?
谢谢
【问题讨论】:
标签: cocoa
你可以使用 stringByAddingPercentEscapesUsingEncoding:
NSString* escapedUrlString =
[unescapedString stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];
但是,根据我的经验,这种方法不是很完美(在处理一些保留字符方面),在很多情况下我需要使用变体:
NSString * escapedUrlString =
(NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)unescapedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
【讨论】:
CFURLCreateStringByAddingPercentEscapes 返回一个保留计数为+1 的字符串,因此您必须在完成后release。
stringByAddingPercentEscapesUsingEncoding: 有一些problems with URL arguments。
我结合使用来自Google Toolbox for Mac 的 gtm_stringByEscapingForURLArgument 作为 URL 参数。
【讨论】:
这对我有用:
NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:[url stringByAddingPercentEscapesUsingEncoding:STRING_ENCODING_IN_THE_SERVER]]
encoding:STRING_ENCODING_IN_THE_SERVER
error:&error];
【讨论】: