为什么需要对 URL 进行编码?

问题描述 投票:0回答:5

为什么需要对网址进行编码? 是否有充分的理由为什么必须将 GET 数据中的每个空格更改为

%20

url
5个回答
64
投票

因为有些字符有特殊的含义。

例如,在查询字符串中,与号 (

&
) 用作键值对之间的分隔符。 如果要将“&”符号放入其中一个值中,它看起来就像值的末尾和下一个键的开头之间的分隔符。 因此,对于像这样的特殊字符,我们使用百分比编码,以便我们可以确保数据是明确编码的。


45
投票

来自 RFC 2936,第 2.4.3 节:

排除空格字符 因为重要的空间可能 消失和微不足道的空间可能 转录 URI 时引入 或排版或受 文字处理的处理 程式。 空格也用于 在许多上下文中分隔 URI。


19
投票
  • 最初较旧的浏览器可能会因空格而感到困惑(不再是真正的问题)。
  • 现在,如果有人复制 URL 以作为链接发送 - 空格可能会破坏超链接 - 即

嘿!看看这只可爱的猫弹钢琴!

http://www.mysite.com/?video=funny cat plays piano.

看看链接如何断开?

现在看看这个:

http://www.mysite.com/?video=funny%20cat%20plays%20piano.

12
投票

让我们分解一下你的问题。

为什么需要对URL进行编码?

URL仅由有限数量的字符组成,包括数字(0-9)、字母(A-Z、a-z)和一些特殊字符(“-”、“.”、“_”、“~”) ).

那么这是否意味着我们不能使用任何其他字符?

这个问题的答案是“是”。但是等一下,有一个 hack,这个 hack 是 URL EncodingPerchantage Encoding

因此,如果您想传输不属于上述字符(数字、字母和特殊字符)的任何字符,那么我们需要对它们进行编码。这就是为什么我们需要将“空格”编码为“%20”。

这里有一些有用的资源(希望如此):


-2
投票

嗯,您这样做是因为每个不同的浏览器都知道组成 URL 的字符串是如何编码的。将空格转换为 %20 等使该 URL/URI 可移植。它可能是 latin-1 也可能是 unicode。 它需要标准化为普遍理解的东西。 看看 rfc3986 https://www.rfc-editor.org/rfc/rfc3986#section-2.1

© www.soinside.com 2019 - 2024. All rights reserved.