我试图将Unicode字符的十六进制表示转换为它们所代表的字符。以下示例正常工作:如何在Perl中将不同的变量存储在字节中时,如何创建Unicode字符?
#!/usr/bin/perl
use Encode qw(encode decode);
binmode(STDOUT, ':encoding(utf-8)');
my $encoded = encode('utf8', "\x{e382}\x{af}");
eval { $encoded = decode('utf8', $encoded, Encode::FB_CROAK); 1 }
or print("coaked\n");
print "$encoded\n";
但是,十六进制数字存储在3个变量中。
因此如果我用这个代替编码线:
my $encoded = encode('utf8', "\x{${byte1}${byte2}}\x{${byte3}}");
其中
my $byte1 = "e3"; my $byte2 = "82"; my $byte3 = "af";
,因为它试图在\ X立即评估,并认为$符号和{为字符它失败。
有谁知道如何解决这个问题。
谢谢!那就是我需要的。 – Tom 2009-08-18 09:53:50