如何对iPhone SDK中的@符号进行URL编码?

Tef*_*Ted 3 iphone urlencode

使用stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding对NSString进行URL编码不会对@符号进行编码.解决这个问题的正确方法是什么?谢谢.

Jam*_*ore 10

在您已经拥有的代码行之后添加它(并将接收器等更改为您自己的变量):

[escaped replaceOccurrencesOfString:@"@" withString:@"%40" options:NSCaseInsensitiveSearch range:wholeString];
Run Code Online (Sandbox Code Playgroud)

如果你想确保一切都是编码的,这是最好的方法:

NSMutableString *escaped = [actionString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];       
[escaped replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"+" withString:@"%2B" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"," withString:@"%2C" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"/" withString:@"%2F" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@":" withString:@"%3A" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@";" withString:@"%3B" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"=" withString:@"%3D" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"?" withString:@"%3F" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"@" withString:@"%40" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@" " withString:@"%20" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\t" withString:@"%09" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"#" withString:@"%23" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"<" withString:@"%3C" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@">" withString:@"%3E" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\"" withString:@"%22" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\n" withString:@"%0A" options:NSCaseInsensitiveSearch range:wholeString];
Run Code Online (Sandbox Code Playgroud)

(来自Roger @ Iphone SDk:URL字符串中带有&符的问题)


Sim*_*ide 7

URL编码的最佳方法是使用此功能,来自我的博客文章http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/:

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