Perl - 如何在Windows控制台中解决编码问题?

时间:2013-08-18 12:36:34

标签: perl encoding

尝试使用俄语lettaz和控制台就像驴一样,因为没有对使用utf8 / utf-8或cp1251指令做出反应。 用红色标记的文字的编码我不知道。 谁知道如何解决?代码清单如下:

#!/usr/bin/perl -w
use strict;
use warnings;
use Tie::IxHash;

tie my %hash, "Tie::IxHash";
   %hash = (
    'шляпа' => 'серая',
    'водка' => 'горькая',
    'вобла' => 'вкусная');

print "В упорядоченной вставке список хеша такой:\n";
foreach my $qwerty (keys %hash){
    print " $qwerty\n";
}
print "Кроме того, предметы обладают некоторыми свойствами:\n";
while((my($predmet, $opredelenie)) = each %hash){
print "$predmet $opredelenie","\n";
}

1 个答案:

答案 0 :(得分:0)

您需要指定STDOUT编码。这个脚本是utf-8编码的:

use strict;
use warnings;

#use Tie::IxHash;
use utf8;
binmode STDOUT, ":encoding(cp866)";

my %hash = (
    'шляпа' => 'серая',
    'водка' => 'горькая',
    'вобла' => 'вкусная'
);

print "В упорядоченной вставке список хеша такой:\n";
foreach my $qwerty ( keys %hash ) {
    print " $qwerty\n";
}
print "Кроме того, предметы обладают некоторыми свойствами:\n";
while ( ( my ( $predmet, $opredelenie ) ) = each %hash ) {
    print "$predmet $opredelenie", "\n";
}