我遇到了Perl的问题。我正在尝试使用HTML::Entities对其执行的字符串进行编码。但是我正在尝试将其转换为数字参考。 e.g:
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ï";
这里的问题是我不想使用这种类型的编码(à
),而是使用这种类型(à
)。
答案 0 :(得分:4)
我有一个使用正则表达式的简单解决方案,以获得您需要的内容,以下是代码:
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é
=======
找到十六进制代码的模式,并将其转换为十进制格式。