我在使用 Perl 时遇到问题。我正在尝试使用 HTML::Entities对它所做的字符串进行编码。但是我正在尝试将其转换为数字引用。例如:
use strict;
use warnings;
use LWP::Protocol::https;
use HTML::Entities;
my $str = "vis-à-vis Beyoncé's naïve\npapier-mâché résumé";
$str = encode_entities($str);
print $str;
这个输出
vis-à-vis Beyoncé's naï
papier-mâché résumé
相反,我想输出
vis-à-vis beyoncè naïve\npapier-mâchï rïsumï";
这里的问题是我不想使用这种类型的编码 (à
),而是使用这种类型 (à
)。
最佳答案
我有一个使用正则表达式的简单解决方案,为了得到你需要的,下面是代码:
use HTML::Entities qw[encode_entities_numeric];
use utf8;
my $str = "vis-à-vis Beyoncé's naïve\npapier-mâché résumé";
$str = encode_entities_numeric($str);
print "\n=======\n",$str,"\n=======\n";
$str =~ s/&#x([A-F0-9]+);/sprintf('&#%s;',hex($1))/ge;
print "\n=======\n",$str,"\n=======\n";
输出看起来像这样:
=======
vis-à-vis Beyoncé's naïve
papier-mâché résumé
=======
=======
vis-à-vis Beyoncé's naïve
papier-mâché résumé
=======
找出十六进制代码的模式,并将其转换为十进制格式。
关于perl - Perl 的数字引用编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32842182/