Perl的数字参考编码

时间:2015-09-29 11:00:14

标签: perl character-encoding

我遇到了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ï";

这里的问题是我不想使用这种类型的编码(à),而是使用这种类型(à)。

1 个答案:

答案 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é
=======

找到十六进制代码的模式,并将其转换为十进制格式。