【问题标题】:Why do URL parameters use %-encoding instead of a simple escape character为什么 URL 参数使用 %-encoding 而不是简单的转义字符
【发布时间】:2014-03-05 00:43:12
【问题描述】:

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

\.

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

%&

相反,它变成:

%26

有什么理由吗?从表面上看,似乎只是让事情变得更复杂,当我们可以只拥有一个转义字符和一种在必要时自行转义的机制时:

%%

那就是:

  1. 更容易记住;我们只需要知道要转义哪些字符,而不是转义哪些字符以及转义它们的内容
  2. 编码不可知,因为我们不会显式发送 ASCII 或 Unicode 表示,我们只会以 URL 其余部分的编码形式发送它们
  3. 易于编写编码器:s/[!\*'();:@&=+$,/?#\[\] "%-\.<>\\^_`{|}~]/%&/g(未经测试!)
  4. 更好,因为我们可以改用\ 作为转义字符,这样生活会更简单,而且全年都是夏天

我现在可能有点走神了。有人打我吗? :)

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

【问题讨论】:

    标签: http url encoding


    【解决方案1】:

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

    【讨论】:

    • 我要编辑问题。当我说分隔符时,我的意思是转义字符。我的例子是为了说明清楚,但也许不是!
    【解决方案2】:

    我猜这是因为 URL 规范,特别是其中的 HTTP 部分,只允许某些字符,因此必须用允许的字符替换它们。

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

    如果您觉得难以辨认,请将此页面添加为书签 http://www.w3schools.com/tags/ref_urlencode.asp

    【讨论】:

    • 呃,是的,我认为这个问题已经涵盖了:)
    • 嗯,我认为它完美地回答了这个问题,你不喜欢它的事实并没有改变:)
    • 我很佩服你的自信,但这并不是说你是对的,我只是不喜欢它,而是问题承认你在说什么,并问为什么会这样。请在匆忙评论之前重新阅读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2011-08-16
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    相关资源
    最近更新 更多