iphone - CFURLCreateStringByAddingPercentEscapes,奇怪的行为?

标签 iphone objective-c urlencode

我正在尝试对 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/

相关文章:

iphone - 在 iOS 应用程序上使用 android shape xml 资源

iphone - 将 UITableViewCell 连接到 Action

php - 通过 IE 发送 £ 符号到 Twitter 通过 ?status=xyz (unicode 错误)

cocoa - Cocoa URL 编码的第 22 条军规

iphone - 当我将它们翻译成另一种语言时,正则表达式是否有效?

iphone - NSFetchedResultsController,修改 NSFetchRequest?

objective-c - quickDialog 表单的通用类

Objective-c 类扩展在静态库中无效

objective-c - 监控网络使用情况,不包括本地流量

swift - Swift 中的 Urlencode 西里尔字符