如何将utf7字符串转换为iso-8859-1格式?我尝试了以下但是打印出错误的结果:
use Encode qw(encode decode);
$data ='t+AOQ-m+AOQ- on mit+AOQ- on';
$data = encode("iso-8859-1", decode("utf7", $data));
print $data; #result Tämä on mitä on
这会打印tΣmΣ on mitΣ on
,但应打印Tämä on mitä on
答案 0 :(得分:5)
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äonmitä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";