我正在尝试对 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
这不正常。我一直在搜索并尝试了一切,我这样做的方式显然应该有效。 谁能指出我正确的方向?
最佳答案
您将结果作为第一个字符串传递给 NSLog
,它需要一个带有 formatting 的字符串它使用百分号。您实际上是在内存中用随机数据填充字符串,以代替每个 % 转义符。要使用 Objective-C 对象说明符修复此日志:
NSLog(@"%@", [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);
关于iphone - CFURLCreateStringByAddingPercentEscapes,奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12097358/