字符串不会在iOS中进行url编码

Joe*_*ssi 9 objective-c urlencode nsstring

我在这里认真对待大脑放屁,但我无法弄清楚为什么这不符合我的生活.一直在搜索,我甚至无法获取代码样本进行编码.有任何想法吗?

NSString *searchString = @"waffl&es";

NSString *encodedSearchString = [searchString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = [NSString stringWithFormat:@"http://en.wikipedia.org/?search=%@", encodedSearchString];
NSURL *url = [NSURL URLWithString:urlString];
Run Code Online (Sandbox Code Playgroud)

Joe*_*ssi 25

为了将来的参考,这是我发现的工作(即正确编码一切)

+ (NSString*)encodeURL:(NSString *)string
{
    NSString *newString = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    if (newString) 
    {
        return newString;
    }

    return @"";
}
Run Code Online (Sandbox Code Playgroud)

  • 您在此答案中使用的桥接演员是不正确的,并且会导致内存泄漏.您应该使用'__bridge_transfer'作为结果.有关详细信息,请参阅此问题:http://stackoverflow.com/questions/6822473/correct-bridging-for-arc (4认同)
  • 谁知道为什么?这很好用,但为什么stringByAddingPercentEscapesUsingEncoding:有时候不行? (2认同)