Perl的数字参考编码

Perl的数字参考编码,perl,character-encoding,Perl,Character Encoding,我对Perl有一个问题。我试图用它来编码一个字符串。但是我试着把它转换成一个数值参考。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

我对Perl有一个问题。我试图用它来编码一个字符串。但是我试着把它转换成一个数值参考。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ï";

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

我有一个使用regex的简单解决方案,要获得您需要的,下面是代码:

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

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

使用子程序encode\u entities\u numeric。默认情况下不会导出此例程。@Pradeep请将其作为答案添加。@Pradeep使用This-i-get(&#xhexnum;)但我想要的是unicode(&#num;)。i、 e我得到
vis-à-与碧昂斯é';s naï;ve-papier-mâ;ché;ré;总和é而不是
vis-à-对碧昂斯è;naï;ve\npapier-mâ;第239章;rï;总和ï;“;
看到区别了吗?Jethro:你为什么关心你的数字是十六进制还是十进制?嗨@pradeep这仍然没有给出理想的结果请注意,unicode foré是
ï;
但是正则表达式将其转换为
和#233
,因此代码的输出是
相对于碧昂萨克的naA ve papier mAcchAc rAcsumAc
与碧昂丝·纳伊夫相比,您可以使用@JETHROKANE code foré为233,而不是
与碧昂丝·纳伊夫相比,检查您的浏览器/终端是否支持utf8