我对 perl 很陌生,并编写了一个使用 LWP 从页面中提取链接的小脚本,结果被解码为这种格式:
http://www.perlmonks.org/%3fnode_id%3d376075
而不是:
http://www.perlmonks.org/?node_id=376075
我不熟悉那种语法......它叫什么?有没有简单的方法可以将其翻译回来?
我对 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
)并传递一个名为的 argnode_id
给它。
也许你实际上有类似的东西
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