我在Perl中有一个变量,它只是一个字母和数字序列:
my $var = "48656c6c6f20576f726c64";
序列代表字符串Hello World
。
即人们可以把它想象为0x48 0x65 0x6c 0x6c 0x6f 0x20 0x57 0x6f 0x72 0x6c 0x64
,Hello World
的十六进制表示。
如何将$var
打印为可读的UTF8?
简短:我如何打印Hello World
?
随着pack
print pack("H*", $var);
或者如果数据在解码后确实是UTF-8编码的话
use Encode;
print Encode::decode("UTF-8", pack("H*", $var));
要获得文字:
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;