【问题标题】:NSURL Encoding in ObjCObjC 中的 NSURL 编码
【发布时间】:2009-11-17 13:43:49
【问题描述】:

如何在 NSURL 中进行 URL 编码?

谢谢

【问题讨论】:

标签: cocoa


【解决方案1】:

你可以使用 stringByAddingPercentEscapesUsingEncoding:

NSString* escapedUrlString =
   [unescapedString stringByAddingPercentEscapesUsingEncoding:
                        NSUTF8StringEncoding];

但是,根据我的经验,这种方法不是很完美(在处理一些保留字符方面),在很多情况下我需要使用变体:

 NSString * escapedUrlString =
  (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)unescapedString,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingUTF8 );

【讨论】:

  • +1,但提醒CFURLCreateStringByAddingPercentEscapes 返回一个保留计数为+1 的字符串,因此您必须在完成后release
  • 你拯救了我的一天@notnoop
【解决方案2】:

stringByAddingPercentEscapesUsingEncoding: 有一些problems with URL arguments

我结合使用来自Google Toolbox for Macgtm_stringByEscapingForURLArgument 作为 URL 参数。

【讨论】:

    【解决方案3】:

    这对我有用:

    NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:[url  stringByAddingPercentEscapesUsingEncoding:STRING_ENCODING_IN_THE_SERVER]] 
                                                          encoding:STRING_ENCODING_IN_THE_SERVER 
                                                             error:&error];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多