Ios NSURLComponents以获取百分比编码

Ios NSURLComponents以获取百分比编码,ios,nsurl,foundation,percent-encoding,Ios,Nsurl,Foundation,Percent Encoding,根据NSURL组件的文档: 如果设置了unencoded属性,则可以获取编码的 通过读取编码的属性值进行等效,反之亦然 我试图获取查询的百分比编码版本和url的路径,但遗漏了一些内容: NSURL * url = [NSURL URLWithString:@"http://google.com"]; NSURLComponents * components = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:YE

根据
NSURL组件的文档

如果设置了unencoded属性,则可以获取编码的 通过读取编码的属性值进行等效,反之亦然

我试图获取查询的百分比编码版本和url的路径,但遗漏了一些内容:

NSURL * url = [NSURL URLWithString:@"http://google.com"];

NSURLComponents * components = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:YES];
components.query = @"oauth_callback=http://google.com";

NSLog(@"Encoded: %@", [components URL]); 
//-> Encoded: http://google.com?oauth_callback=http://google.com
//Does not encode "/" or ":"

哪里会失败?

我认为
NSURLComponent
的行为是正确的。 发件人:

在URI(字符后面的部分)的“查询”组件中 例如,“/”仍然被视为保留字符,但通常 没有保留用途,除非特定的URI方案 否则。当输入字符时,不需要对其进行百分比编码 没有保留的目的