NSURLComponents获取百分比编码

时间:2014-08-12 08:49:21

标签: ios nsurl foundation percent-encoding

根据NSURLComponents的文件:

  

如果设置了未编码的属性,则可以获取已编码的属性   相当于读取编码的属性值,反之亦然。

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

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 ":"

我在哪里失败?

1 个答案:

答案 0 :(得分:1)

我认为NSURLComponent的行为是正确的。 来自Wikipedia

  

在URI的“查询”组件(?字符后面的部分)中,用于   例如,“/”仍然被认为是保留字符,但它通常是   没有保留的目的,除非特定的URI方案说   除此以外。该字符不需要进行百分比编码   没有保留的目的。