4

我正在尝试对 URL 进行编码,我以前从未这样做过,所以当没有得到预期的结果时我很困惑。我正在CFURLCreateStringByAddingPercentEscapes这样做,但返回的内容看起来不像任何在线 URL 编码器/解码器,例如

-(void)urlEncodedString{


 NSString *str = @"\"Hi!! my name is John. \n What's your's?\"";

NSLog([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);


}

我期待类似的东西:

%5C%22Hi%21%21%20my%20name%20is%20John.%20%5Cn%20What%27s%20your%27s%3F%5C%22

但相反,我得到:

2i2212yame 0s2ohn3.786691E-27020A2hat º»åå2our 0.0000002

这不可能是正常的。我一直在寻找并尝试了一切,我这样做的方式显然应该有效。谁能指出我正确的方向?

4

1 回答 1

5

您将结果作为第一个字符串传递给NSLog该字符串,该字符串需要具有使用百分号的格式的字符串。您实际上是在内存中用随机数据填充字符串,而不是每个 % 转义。要使用 Objective-C 对象说明符修复此日志:

NSLog(@"%@", [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);
于 2012-08-23T18:01:06.033 回答