2

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

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

@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&symbols"它将输出的字符串:

S: null, Self: 测试&符号

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

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

关于这里可能是什么问题的任何想法?

先感谢您!/ 马格纳斯

4

1 回答 1

2

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

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

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

任何不便敬请谅解。

-马格纳斯

于 2012-05-09T08:03:47.053 回答