Iphone 如何在obj-c中构建一个查询字符串,并在必要时进行转义?
我想在obj-c eg中构建一个查询字符串 只是想知道如何去做这件事,使所有不友好的字符(如&,%)得到妥善转义 谢谢这行吗Iphone 如何在obj-c中构建一个查询字符串,并在必要时进行转义?,iphone,objective-c,query-string,Iphone,Objective C,Query String,我想在obj-c eg中构建一个查询字符串 只是想知道如何去做这件事,使所有不友好的字符(如&,%)得到妥善转义 谢谢这行吗 +(NSString*)urlEscape:(NSString *)unencodedString { NSString *s = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)unencodedString, NULL,
+(NSString*)urlEscape:(NSString *)unencodedString {
NSString *s = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
kCFStringEncodingUTF8);
return [s autorelease]; // Due to the 'create rule' we own the above and must autorelease it
}
这与NSString的StringByAddingPercentescapesusingEncode有关吗?还是与CFURL的CFURLCreateStringByAddingPercentEscapes有关?这个看起来很复杂。发现这个:是的,但为什么不这样做呢<代码>[UncodedString ByAddingPercentescapesusingEncoding:NSUTF8StringEncoding]我听说该函数有缺陷,不能转义例如“与”。很高兴被证明是错误的,但是,因为它确实看起来简单得多!在哪里听说的,还有什么意义上的童车
stringbyaddingpercentescapesusingencode:
是一个方便的Objective-C包装器,用于处理简单转换的CFURLCreateStringByAddingPercentEscapes
。方法级文档明确声明:“请参阅CFURLCreateStringByAddingPercentEscapes以了解更复杂的转换。”不过,在我看来,您正在编码的URL不需要这样做。我只是真正想要标准转义。我刚在谷歌搜索中发现,人们说StringByAddingPercentsEscapeSusingEncoding:NSUTF8StringEncoding没有逃过符号AND,我认为这在逃逸时是必不可少的!您自己在xcode中的调试器中检查它:它不会通过添加百分比转义使用编码:4]a%20bc&def%3C%3E来转义和:(gdb)po[@“a bc&def”字符串