为什么“&”,“+”字符未在iOS中编码?

时间:2014-01-20 05:40:38

标签: ios iphone

我正在使用以下代码片段对字符串进行编码,我需要将其发送到REST Api的

 NSString* content=@"Test &a=b";
 NSString* encodedString=[content stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
 NSLog(@"encodedString :%@",encodedString);

获得以下输出

**Test%20&a=b**

为什么“&”和“=”字符不编码?

但是这个问题是通过使用“CFURLCreateStringByAddingPercentEscapes”方法解决的

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

看起来NSASCIIStringEncoding将转换为7位Ascii,+为43且&为38.由于它们是有效的7位ASCII字符,我不希望它们用你所拥有的东西进行转换。来源 -

虽然CFURLCreateStringByAddingPercentEscapes将

  

用等效的百分比替换某些字符   基于指定编码的序列

来源:

https://developer.apple.com/library/mac/documentation/corefoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/c/func/CFURLCreateStringByAddingPercentEscapes

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/doc/c_ref/NSASCIIStringEncoding

https://en.wikipedia.org/wiki/ASCII