为什么需要编码URL?

时间:2010-01-28 06:32:50

标签: url

为什么需要对网址进行编码?您是否有充分理由将GET数据中的每个空间都更改为%20

5 个答案:

答案 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