Http 为什么URL参数使用%编码而不是简单的转义字符

Http 为什么URL参数使用%编码而不是简单的转义字符,http,url,encoding,Http,Url,Encoding,例如,在Unix中,反斜杠\是常见的转义字符。所以,为了逃避一个句号。在正则表达式中,可以执行以下操作: \. 但对于%编码URL参数,我们有一个转义字符,%和一个控制代码,因此符号&不会变成: %& 相反,它变成: %26 有什么原因吗?表面上看,这似乎让事情变得更复杂了,因为我们只需要一个逃逸角色和一个在必要时逃逸的机制: %% 那就是: 更容易记住;我们只需要知道该转义哪个角色,而不是该转义哪个角色以及转义到什么地方 编码不可知,因为我们不会显式地发送ASCII或Unico

例如,在Unix中,反斜杠\是常见的转义字符。所以,为了逃避一个句号。在正则表达式中,可以执行以下操作:

\.
但对于%编码URL参数,我们有一个转义字符,%和一个控制代码,因此符号&不会变成:

%&
相反,它变成:

%26
有什么原因吗?表面上看,这似乎让事情变得更复杂了,因为我们只需要一个逃逸角色和一个在必要时逃逸的机制:

%%
那就是:

更容易记住;我们只需要知道该转义哪个角色,而不是该转义哪个角色以及转义到什么地方 编码不可知,因为我们不会显式地发送ASCII或Unicode表示,所以我们只会在URL的其余部分使用的编码中发送它们 易于编写编码器:s/[!\*';:@&=+$,/?\[\]%-\.\\^{124;}~]/%&/g未经测试! 更好的办法是,我们可以将\转换为转义角色,这样生活会更简单,一年四季都是夏天 我现在可能有点忘乎所以了。有人朝我开枪吗


编辑:将分隔符的两种用法替换为转义字符。

我想这是因为URL规范,特别是其中的HTTP部分,只允许某些字符转义,所以必须将它们替换为允许的字符

还有一些允许的字符有特殊的含义,如&和?等 因此,用控制代码替换它们似乎是解决问题的唯一方法

如果你发现很难识别它们,请将此页面标记为书签

百分比编码不仅用于转义分隔符,还可以用于传输URI中不允许的字节,如控制字符或非ASCII字符。

呃,是的,我认为这已经包含在问题中:我认为它完美地回答了这个问题,你不喜欢的事实并没有改变这一点:我钦佩你的自信,但这并不是说你是对的,我只是不喜欢,而是问题承认了你所说的,并问为什么会这样。请在匆忙评论之前重新阅读。我将编辑此问题。我说的分隔符是指转义字符。我的例子是为了说明这一点,但也许不是!