Perl的数字参考编码
我对Perl有一个问题。我试图用它来编码一个字符串。但是我试着把它转换成一个数值参考。e、 g: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
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(hexnum;)但我想要的是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