我在使用百分比转义非法符号的类别方法时遇到问题。
这是我用于该任务的代码:
@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/