ObjC中的NSURL编码

Bir*_*chi 10 cocoa

如何在NSURL中进行URL编码?

谢谢

not*_*oop 27

您可以使用stringByAddingPercentEscapesUsingEncoding:

NSString* escapedUrlString =
   [unescapedString stringByAddingPercentEscapesUsingEncoding:
                        NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

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

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

  • +1,但提醒一下`CFURLCreateStringByAddingPercentEscapes`返回一个+1保留计数的字符串,所以你必须在完成后"释放"它. (3认同)

amr*_*rox 6

stringByAddingPercentEscapesUsingEncoding:URL参数有一些问题.

结合使用Google Toolbox for Mac中的gtm_stringByEscapingForURLArgument来获取URL参数.