我发现[NSURL URLWithString:]方法会自动跳过传递给它的url字符串中的一些字符。例如它脱离了括号。但是,URL字符串中包含的其他非法律网址字符<和>导致无为什么[NSURL URLWithString:]会转义url字符串中的某些字符,而不会转换为其他字符?
[[NSURL URLWithString:@"http://foo.bar/?key[]=value[]"] absoluteString]
返回相同结果的方法返回与
[@"http://foo.bar/?key[]=value[]" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
同时,
[NSURL URLWithString:@"http://foo.bar/?key[]=value[]<>"] returns nil, not a url with an escaped string.
究竟是什么在启动NSURL实例时发生?为什么它逃脱(也许)只有括号?
你仍在零* myUrl = [NSURL URLWithString:[@“http://foo.bar/?key [] = value [] <>”stringByAddingPercentExcapesUsingEncoding:NSUTF8Encoding]];'? – Sam