%perl中链接中的3f和%3d



我是perl新手,写了一个小脚本,使用LWP从页面中提取链接,结果被解码为以下格式:

http://www.perlmonks.org/%3fnode_id%3d376075

而不是:

http://www.perlmonks.org/?node_id=376075

我不熟悉那种语法。。。它叫什么?有没有一种简单的方法可以把它翻译回来?

http://www.perlmonks.org/%3fnode_id%3d376075

http://www.perlmonks.org/?node_id=376075

不是等效的URL。将uri_unescape应用于url永远不会正确。它只能用于提取的组件。第一个访问名为?node_id=376075的文件。第二个访问默认文件(恰好是index.pl),并将名为node_id的arg传递给它

也许你真的有类似的东西

foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075

在这种情况下,您需要URI。它既提取了这些部分,又对它们进行了解码。正确地

use URI qw( );
my $url = URI->new('foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075');
my %form = $url->query_form();
say $form{redirect};  # http://www.perlmonks.org/?node_id=376075

这就是URL编码的作用。

有几个perl库可以帮助解码,反之亦然。以下是在快速搜索中弹出的一个:http://www.perlhowto.com/encode_and_decode_url_strings

最新更新