-2

尝试使用俄罗斯 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";
}
4

1 回答 1

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";
}
于 2013-08-18T13:29:29.703 回答