我打算从包含许多以“%xx”形式表示的 unicode 字符的网页中提取内容。当我使用 Perl 模块 LWP 来获取网页时,自然会使用 Perl Regex 处理这些 unicode 字符,如下所示。
my $html = "%20%26%40 ";
$html =~ s#%([0-9a-f]+)#\x{\1}#ig;
print "$html\n";
但是上面的代码不起作用,它只输出“00”。现在卡住......任何提示将不胜感激。
谢谢,叶
URI::Escape
Perl 已经为此在模块中内置了函数。你不需要弄乱正则表达式
use URI::Escape;
my $encode = uri_unescape($string);
有关更多信息,请参阅此页面
有趣而丑陋的代码:
my $html = "%20%26%40 ";
$html =~ s#%([0-9a-f]{2})#"chr(0x$1)"#igee;
print "$html\n";
编辑:(我不得不说)这段代码可能很可爱,但不要在生产中使用它!(有很多情况下它不起作用)