iphone - CFURLCreateStringByAddingPercentEscapes 返回 NULL

标签 iphone objective-c ios

我在使用百分比转义非法符号的类别方法时遇到问题。

这是我用于该任务的代码:

@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
    NSString *s = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(encoding));
    NSLog(@"S: %@, Self: %@", s, self);
    return [s autorelease];
}
@end

当我在没有在上面的匹配字符串中找到任何符号的字符串上运行此方法时,该方法运行良好并且相同的字符串返回给我。

例如,如果我有一个像 @"test" 这样的字符串,它将输出:

S: test, Self: test

但是如果我使用像 @"test&symbols" 这样的字符串,它将输出:

S: null, Self: test&symbols

因此,使用 CFURLCreateStringByAddingPercentEscapes 似乎有问题。

现在我想转义 & 等符号,因为它们可能出现在用作查询字符串中的值的字符串中,这会导致查询字符串被误解。

您知道这里可能存在什么问题吗?

提前谢谢您!/马格努斯

最佳答案

发现我的大错误后。
我被告知要自己回答这个问题。

我做错了什么,我没有将 NSStringEncoding 值传递给该方法,例如 NSUTF8StringEncoding ,而是传递了一个 CF 值,例如 kCFStringEncodingUTF8.

该值通过转换器传递以使其成为 CF 值,这会导致错误,并且它已经具有正确的类型。

对于给您带来的任何不便,我们深表歉意。

-马格努斯

关于iphone - CFURLCreateStringByAddingPercentEscapes 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497698/

相关文章:

iphone - 如何使用 iPhone 应用程序在 MVC4 apicontroller 中提供用户安全

ios - 如何在 UICollectionview 中显示前 9 个图像?

ios - Stripe STPCustomerDeserializer 无法解析客户 Swift

ios - 按年、月、日排序时出现问题

iphone - 从 AppDelegate 将 NSMutableArray 添加到第二个选项卡中的 TableView

ios - 如何在 iOS 7 和 iOS 6 中支持不同的标签栏图标大小?

iphone - 关于 iPhone 中的推送通知服务

iphone - 来自字符串的子字符串

iphone - 如何在 ios 中将 sendSynchronousRequest 更改为 sendASynchronousRequest?

ios - 仅从核心数据中的(日期+时间)格式获取(日期)