有时空格会被 URL 编码为+标志,有时会被编码为%20. 有什么区别,为什么会发生这种情况?
+
%20
+ 仅 表示内容中的空格application/x-www-form-urlencoded,例如 URL 的查询部分:
application/x-www-form-urlencoded
http://www.example.com/path/foo+bar/path?query+name=query+value
在此 URL 中,参数名称query name带有空格,值query value带有空格,但路径中的文件夹名称字面意思是foo+bar, 而不是 foo bar。
query name
query value
foo+bar
foo bar
%20是在这些上下文中对空间进行编码的有效方法。因此,如果您需要对字符串进行 URL 编码以包含在 URL 的一部分中,则始终可以安全地将空格替换%20为%2B. 这就是,例如,encodeURIComponent()在 JavaScript 中所做的。不幸的是,这不是urlencode在 PHP 中所做的(rawurlencode更安全)。
%2B
encodeURIComponent()
HTML 4.01 规范 application/x-www-form- urlencoded