use Encode qw(encode decode);
$data ='t+AOQ-m+AOQ- on mit+AOQ- on';
$data = encode("iso-latin-1", decode("utf7", $data));
printf "%v02X\n", $data;
给
74.E4.6D.E4.20.6F.6E.20.6D.69.74.E4.20.6F.6E
这是iso-latin-1编码
tämä on mitä on
如果您看到“tämä on mitä on”以外的内容,那是因为您用来查看它的工具将其视为非 iso-latin-1 的内容。
您想要 iso-latin-1,还是希望它在您的工具中正确显示?如果是后者,请使用正确的编码而不是 iso-latin-1。
如果命令行工具chcp
返回 437(例如),则需要 cp437。
use Encode qw(encode decode);
my $raw ='t+AOQ-m+AOQ- on mit+AOQ- on';
my $data = decode("utf7", $raw);
print encode("cp437", "$data\n");
或者更好
use open ':std', ':encoding(cp437)';
use Encode qw(decode);
my $raw ='t+AOQ-m+AOQ- on mit+AOQ- on';
my $data = decode("utf7", $raw);
print "$data\n";