NSURL:置身事外的法则

缘起:https://stackoverflow.com/questions/7996338/why-nsurl-urlwithstring-escapes-some-characters-in-url-string-and-doesnt-for

[NSURL URLWithString:]方法会转义部分字符,比如'[]';一下字符不转义,比如':/%#@';而遇到另一些字符,比如'<>'直接返回nil。

这个方法应该只适应于服务器返回的String,它假设服务器把url中非法的字符已经过滤了。如果是本地拼接url,还是需要调接用[NSString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]转义。

对于文件系统,非法字符又不同。因此Apple在文档中特别注明,文件URL创建用另外函数[NSURL fileURLWithPath: isDirectory:]


Java也有对URL和String做区分

你可能感兴趣的:(NSURL:置身事外的法则)