为什么URL参数使用%-encoding而不是简单的转义字符

时间:2014-02-07 14:43:05

标签: http url encoding

例如,在Unix中,反斜杠(\)是常见的转义字符。因此,为了在正则表达式中转义句点(。),可以这样做:

\.

但是使用%encoding URL参数,我们有一个转义字符,%,一个控制代码,因此&符号(&)不会变为:

%&

相反,它变成了:

%26

有什么理由?从某种程度上说,当我们只有一个转义字符和一个在必要时逃脱的机制时,似乎只是让事情变得更复杂:

%%

然后它是:

  1. 更容易记住;我们只需要知道要逃避哪些角色,而不是逃避哪些角色以及逃避它们
  2. 编码不可知,因为我们不会明确地发送ASCII或Unicode表示,我们只是在编码中发送它们其余的URL进入
  3. 易于编写编码器:s/[!\*'();:@&=+$,/?#\[\] "%-\.<>\\^_`{|}~]/%&/g(未经测试!)
  4. 更好,因为我们可以转而使用\作为转义字符,生活会更简单,而且整年都是夏天
  5. 我现在可能会被带走。有人把我击倒了? :)

    编辑:取代了&#34;分隔符&#34;的两种用法使用&#34;转义字符&#34;。

2 个答案:

答案 0 :(得分:1)

百分比编码不仅发生在转义分隔符上,而且还可以传输URI中不允许的字节(例如控制字符或非ASCII字符)。

答案 1 :(得分:-2)

我想这是因为URL规范,特别是它的HTTP部分,只允许某些字符逃脱,所以必须用允许的字符替换它们。

此外,一些允许的角色具有特殊含义,如&amp;和?等等 所以用控制代码替换它们似乎是解决它的唯一方法

如果您发现很难识别它们,请将此页面添加为书签 http://www.w3schools.com/tags/ref_urlencode.asp