为什么需要对网址进行编码?您是否有充分理由将GET数据中的每个空间都更改为%20
?
答案 0 :(得分:34)
因为某些字符具有特殊含义。
例如,在查询字符串中,&符号(&
)用作键值对之间的分隔符。如果您将&符号放入其中一个值中,它看起来就像值的结尾和下一个键的开头之间的分隔符。因此,对于像这样的特殊字符,我们使用百分比编码,以便我们可以确保数据是明确编码的。
答案 1 :(得分:30)
来自RFC 2936,第2.4.3节:
排除空格字符 因为重要的空间可能 消失和微不足道的空间可能 在转录URI时引入 或排版或受到 处理文字处理 程式。空白也习惯了 在许多上下文中分隔URI。
答案 2 :(得分:11)
喂!看看这个玩钢琴的小猫!
http://www.mysite.com/?video=funny cat plays piano.
看看链接如何破裂?
现在看看:
http://www.mysite.com/?video=funny%20cat%20plays%20piano.
答案 3 :(得分:1)
让我们细分您的问题。
为什么需要对URL进行编码?
URL仅由有限数量的字符组成,它们是数字(0-9),字母(AZ,az)和一些特殊字符(“-”,“。”,“ _”,“〜”) 。
所以这意味着我们不能使用其他任何字符吗?
这个问题的答案是“是”。但是请稍候,这里有一个骇客,该骇客是 URL编码或 Perchantage编码。因此,如果您要传输不属于上述成员的任何字符(数字,字母和特殊字符),那么我们需要对它们进行编码。这就是为什么我们需要将“空格”编码为“%20”的原因。
好?这足以用于URL编码吗?不,这还不够,URL编码有很多,但是在这里,我不会说这是一个很大,很无聊的技术答案。但是,如果您想了解更多信息,则可以从这里阅读:https://www.urlencoder.io/learn/(版权归作者所有)
答案 4 :(得分:-4)
嗯,这样做是因为每个不同的浏览器都知道如何编码构成URL的字符串。将空格转换为%20等会使URL / URI可移植。它可能是拉丁语-1它可能是unicode。它需要归一化为普遍理解的东西。看看rfc3986 http://tools.ietf.org/html/rfc3986#section-2.1