我是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