如何在Perl中将十六进制转换为字符串

问题描述 投票:2回答:2

我正在使用Perl,我有一个字符串:

诱饵b

我怎样才能将其转换为

阿涅斯湾

?

我试过使用下面的代码。

my $hex = "agn\u00e8s b";
$hex =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
print "$hex\n";

但它失败并显示出一些奇怪的性格。更重要的是,我还需要显示中文单词。例如,

\烹饪\面纱05

我如何转换为以下内容?

面包

perl unicode hex
2个回答
3
投票
my $s = "agn\\u00e8s b";
$s =~ s/\\u(....)/chr(hex($1))/eg;
print "$s\n";

不要忘记对输出进行编码

use open ':std', ':encoding(UTF-8)';

0
投票

用这个:

$ hex = ~s /(\ u [a-fA-F0-9] [a-fA-F0-9] [a-fA-F0-9] [a-fA-F0-9])/ encode(' utf-8',chr(十六进制($ 1)))/例如;

© www.soinside.com 2019 - 2024. All rights reserved.