为什么需要对网址进行编码? 是否有充分的理由为什么必须将 GET 数据中的每个空格更改为
%20
?
因为有些字符有特殊的含义。
例如,在查询字符串中,与号 (
&
) 用作键值对之间的分隔符。 如果要将“&”符号放入其中一个值中,它看起来就像值的末尾和下一个键的开头之间的分隔符。 因此,对于像这样的特殊字符,我们使用百分比编码,以便我们可以确保数据是明确编码的。
来自 RFC 2936,第 2.4.3 节:
排除空格字符 因为重要的空间可能 消失和微不足道的空间可能 转录 URI 时引入 或排版或受 文字处理的处理 程式。 空格也用于 在许多上下文中分隔 URI。
嘿!看看这只可爱的猫弹钢琴!
http://www.mysite.com/?video=funny cat plays piano.
看看链接如何断开?
现在看看这个:
http://www.mysite.com/?video=funny%20cat%20plays%20piano.
让我们分解一下你的问题。
为什么需要对URL进行编码?
URL仅由有限数量的字符组成,包括数字(0-9)、字母(A-Z、a-z)和一些特殊字符(“-”、“.”、“_”、“~”) ).
那么这是否意味着我们不能使用任何其他字符?
这个问题的答案是“是”。但是等一下,有一个 hack,这个 hack 是 URL Encoding 或 Perchantage Encoding。
因此,如果您想传输不属于上述字符(数字、字母和特殊字符)的任何字符,那么我们需要对它们进行编码。这就是为什么我们需要将“空格”编码为“%20”。
这里有一些有用的资源(希望如此):
嗯,您这样做是因为每个不同的浏览器都知道组成 URL 的字符串是如何编码的。将空格转换为 %20 等使该 URL/URI 可移植。它可能是 latin-1 也可能是 unicode。 它需要标准化为普遍理解的东西。 看看 rfc3986 https://www.rfc-editor.org/rfc/rfc3986#section-2.1