stringByAddingPercentEscapesUsingEncoding不会转义"&"

Pat*_*ick 1 objective-c nsstring

stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding用来将数据传递给php脚本.问题是如果字段中的字符"&"在文本中说:"某人和汽车",只保存文本"某人","&"之后的所有内容都没有.

要创建我使用的字符串[NSString stringWithFormat:],所以我在表单中有5个字段,如果我使用stringbyReplacingOcorrencesOfstring:@"&",它的作用是将整个字符串替换为文本字段中的字符'&',因此我得到错误.

有任何想法吗?

Jam*_*ost 6

不幸的是,stringByAddingPercentEscapesUsingEncoding:实际上并没有逃避所有必要的URL字符.

相反,您可以使用较低级别的CoreFoundation函数:

(NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)myString, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding));
Run Code Online (Sandbox Code Playgroud)

或者,当使用ARC时:

CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)myString, NULL, (__bridge CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding)));
Run Code Online (Sandbox Code Playgroud)

有关使用此功能的类别示例,请参阅此文章NSString.