2

perl でファイルからキリル文字を読み取るのに問題があります。

テキストファイルはメモ帳で書かれており、「абвгдежзийклмнопрстуфхцчшщъьюя」が含まれています。これが私のコードです:

#!/usr/bin/perl

use warnings;
use strict;

open FILE, "text.txt" or die $!;

while (<FILE>) {
    print $_;   
}

ANSI エンコーディングを使用してテキスト ファイルを保存すると、次のようになります。

рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·№■

UTF-8 エンコーディングを使用して保存し、Encode パッケージの関数 decode('UTF-8', $_) を使用すると、次のようになります。

Wide character in print at test.pl line 11, <TEXT> line 1.

そして読めない文字の束。

Windows 7x64 でコマンド プロンプトを使用しています。

4

1 に答える 1

5

入力をデコードしていますが、出力をエンコードするのを「忘れて」います。

ファイルはおそらくcp1251を使用してエンコードされています。

あなたの端末はcp866を期待しています。

使用する

use open ':std', ':encoding(cp866)';
use open IO => ':encoding(cp1251)';
open(my $FILE, '<', 'text.txt')
   or die $!;

また

use open ':std', ':encoding(cp866)';
open(my $FILE, '<:encoding(cp1251)', 'text.txt')
   or die $!;

UTF-8 で保存した場合:encoding(UTF-8)の代わりに使用します。:encoding(cp1251)

于 2013-02-02T16:00:48.290 に答える