有些时候,空格会将网址编码为+符号,有些时候则是%20。有什么区别,为什么会这样呢?
+指仅在application/x-www-form-urlencoded内容中的空间,例如URL的查询部分:
http://www.example.com/path/foo+bar/path?query+name=query+value
在这个URL中,参数名是query name带空格的,值是query value空格,但是路径中的文件夹名字是字面意思foo+bar,不是 foo bar。
%20是在这些上下文中编码空间的有效方法。所以,如果你需要URL编码列入一个字符串URL的一部分,它始终是安全的空格替换%20用和加号%2B。这是例如。encodeURIComponent()在JavaScript中。不幸的是,这不是什么urlencode在PHP(rawurlencode更安全)