Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在obj-c中构建一个查询字符串,并在必要时进行转义?_Iphone_Objective C_Query String - Fatal编程技术网

Iphone 如何在obj-c中构建一个查询字符串,并在必要时进行转义?

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,

我想在obj-c eg中构建一个查询字符串

只是想知道如何去做这件事,使所有不友好的字符(如&,%)得到妥善转义

谢谢这行吗

+(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”字符串