【问题标题】:URL encode string in ios failingios中的URL编码字符串失败
【发布时间】:2012-01-10 16:01:35
【问题描述】:

我正在尝试使用 ARC 在我的 iOS 5 应用程序中对字符串进行 url 编码。

这就是我的做法:

- (NSString *)escape:(NSString *)text
{
    return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                          (__bridge CFStringRef)text, NULL,
                                          (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                          kCFStringEncodingUTF8);
}

然后我用这样的测试数据调用它:

NSLog([self escape:@"kalel///&&&???"]);

但我从NSLog 得到的输出是这样的:

kalel0.0000000.0000000.00000022623F0.0000000.000000

这似乎不对,但无论如何我都无法做到

【问题讨论】:

    标签: ios5 automatic-ref-counting urlencode cfstring


    【解决方案1】:

    您的escape 功能很好。问题在于您调用NSLog的方式:

    escape 为您的输入生成字符串 kalel%2F%2F%2F%26%26%26%3F%3F%3FNSLog 将此字符串解释为格式字符串,并在 kalel 单词之后将一些垃圾打印为浮点数!

    您应该始终使用字符串常量作为第一个参数调用NSLog,例如:

    NSLog(@"%@", [self escape:@"kalel///&&&???"]);
    

    P.S.您在escape 中存在内存泄漏——您应该在将保留的 CF 对象转移到 Objective C 空间时return (__bridge_transfer NSString *)

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 2018-09-06
      • 2012-02-29
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多