问题编码一个string与百分之逃脱iphone

这是我的string。

NSString *str=@"A & B"; 

现在我将它转换为NSUTF8StringEncoding。

 str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"str: %@", str); 

空格replace为%20,但&不会replace为%26。

nslog显示

 str: A%20&%20B 

这也是行不通的

 NSString *str=@"(A) & (B)"; str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"str: %@", str); 

nslog显示

 str: (A)%20&%20(B) 

我需要这个,因为我必须通过这个参数值在web服务。 任何人都有这个想法。 请帮我解决这个问题。 很好的答案将不胜感激

你可以使用CFURLCreateStringByAddingPercentEscapes()来做到这一点:

 NSString *string = ...; NSString *encodedString = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8));