如何在Perl中将字符序列(十六进制)打印为UTF8字符?

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

我在Perl中有一个变量,它只是一个字母和数字序列:

my $var = "48656c6c6f20576f726c64";

序列代表字符串Hello World

即人们可以把它想象为0x48 0x65 0x6c 0x6c 0x6f 0x20 0x57 0x6f 0x72 0x6c 0x64Hello World的十六进制表示。

如何将$var打印为可读的UTF8?

简短:我如何打印Hello World

perl utf-8 hex
2个回答
1
投票

随着pack

print pack("H*", $var);

或者如果数据在解码后确实是UTF-8编码的话

use Encode;
print Encode::decode("UTF-8", pack("H*", $var));

2
投票

要获得文字:

use Encode qw( decode_utf8 );

my $hex   = "48656c6c6f20576f726c64";
my $bytes = pack('H*', $hex);
my $text  = decode_utf8($bytes);

要打印它:

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

say $text;
© www.soinside.com 2019 - 2024. All rights reserved.