ObjC中的NSURL编码

时间:2009-11-17 13:43:50

标签: cocoa

如何在NSURL中进行网址编码?

由于

3 个答案:

答案 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];