Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么需要对URL进行编码?_Url - Fatal编程技术网

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

为什么需要对URL进行编码?,url,Url,为什么需要对URL进行编码?您是否有充分的理由将GET data中的每个空格更改为%20?From,第2.4.3节: 空格字符被排除在外 因为重要的空间可能 消失,无足轻重的空间可能消失 在转录URI时引入 或排版,或受 文字处理的处理 程序。空白也用于 在许多上下文中分隔URI 这样做是因为每个不同的浏览器都知道组成URL的字符串是如何编码的。将空间转换为%20等可使该URL/URI可移植。它可以是拉丁语-1,也可以是unicode。它需要标准化为普遍理解的东西。请看rfc3986,因为有些字

为什么需要对URL进行编码?您是否有充分的理由将GET data中的每个空格更改为
%20

From,第2.4.3节:

空格字符被排除在外 因为重要的空间可能 消失,无足轻重的空间可能消失 在转录URI时引入 或排版,或受 文字处理的处理 程序。空白也用于 在许多上下文中分隔URI


这样做是因为每个不同的浏览器都知道组成URL的字符串是如何编码的。将空间转换为%20等可使该URL/URI可移植。它可以是拉丁语-1,也可以是unicode。它需要标准化为普遍理解的东西。请看rfc3986,因为有些字符具有特殊含义

例如,在查询字符串中,符号(
&
)用作键值对之间的分隔符。如果要在这些值中的一个值中输入一个与,它看起来就像是一个值的结尾和下一个键的开头之间的分隔符。所以对于像这样的特殊字符,我们使用百分比编码,这样我们就可以确保数据是明确编码的。

  • 最初,较旧的浏览器可能会被空格弄糊涂(不再是一个真正的问题)
  • 现在,如果有人复制url作为链接发送-空间可以破坏超链接-即
嘿!看看这只正在弹钢琴的猫

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)和一些特殊字符(“-”、“,”、““、“~”)。
那么这是否意味着我们不能使用任何其他字符?
这个问题的答案是“是”。但是等一下,有一个黑客,黑客是URL编码percantage编码。因此,如果您想要传输任何不是上述字符的字符(数字、字母和特殊字符),那么我们需要对它们进行编码。这就是为什么我们需要将“空格”编码为“%20”。

好啊这对于URL编码来说足够了吗?不,这还不够,有很多关于URL编码的内容,但在这里,我不想让它成为一个相当大的、无聊的技术答案。但是如果你想知道更多,那么你可以从这里阅读:(作者的功劳)

不能比RFCIn更精确,换句话说,“不,没有内在的技术原因,但我们知道实现者和用户都是草率的。”这可能是正确的决定,主要是因为用户很难保持适当的空间。@Matthew-这是一个内在的技术原因,请参阅我的answer@Rippo:您的回答声称它们“不安全”,但是没有给出任何技术原因。@Matthew-根据我的经验,不安全意味着一定有技术原因……更改字节的表示形式并没有指定编码。至少不是字面意义上的。一个很好的理由是,在印刷材料中,最好使用
%20
,这样一些bod就可以在不尝试猜测空格数的情况下键入它!但是,假设您可以将
&
编码为
%26
。仍然可以有一个包含字符串的值,如
100%26=22
。看起来键值对之间的分隔符不是吗?不是,因为
%
是具有特殊含义的字符之一,因此也必须进行编码(如
%25
)。如果您有字符串值
%26
,则该值将在URL中显示为
%2526
,因为
%
将被编码。要获取字符串值,您需要将
%25
解码为
%
,剩下字符串
%26