编码的URL不起作用

时间:2011-11-13 21:36:31

标签: html urldecode utf8-decode

我对编码的网址感到困惑。

例如,当我编写浏览器时:

stackoverflow.com/questions

我可以成功查看该页面。

然而,当我写:

stackoverflow.com%2Fquestions

我无法查看。

由于%2F 表示“/”,我想了解为什么这不能正常工作。

我想知道的原因是我收到了一个编码后的网址,我不知道如何在收到该网址后立即解码该网址,以便不会出现错误页面。

5 个答案:

答案 0 :(得分:10)

/percent-encoding reserved characters之一。网址使用percent-encoding reserved characters来定义其语法。只有当这些字符没有在URL中的特殊角色中使用时,才需要对它们进行编码。

编码保留字符的百分比:

!       *       '       (       )       ;       :       @       &       =       +       $       ,       /       ?       #       [       ]
%21     %2A     %27     %28     %29     %3B     %3A     %40     %26     %3D     %2B     %24     %2C     %2F     %3F     %23     %5B     %5D

答案 1 :(得分:5)

%2F网址已转义 /。这意味着,将/视为字符,而不是目录分隔符。

从本质上讲,它正在寻找 stackoverflow.com/questions,而不是路径为stackoverflow.com的域questions

答案 2 :(得分:1)

%2F是您希望在参数中包含/但不希望浏览器导航到其他目录/路由时编写的内容。

因此,如果您将文件路径“root / subdirectory”作为查询字符串参数传递,则需要对其进行编码,如:

http://www.testurl.com/page.php?path=root%2Fsubdirectory

而不是

http://www.testurl.com/page.php?path=root/subdirectory

答案 3 :(得分:1)

使用URL编码,例如用于编码来自HTML表单的字符串URL参数,该表单包含特殊字符,如“/”。编写“stackoverflow.com%2Fquestions”是错误的,在这种情况下,“/”是URL本身的一部分,不得编码。

答案 4 :(得分:1)

%2F是一个转义字符实体 - 意味着它将包含在名称中,而不是字符/,它表示目录层次结构as specified in RFC 1630, page 8