Unicode 文字列を Windows コンソールに出力する際に奇妙な問題が発生しています*。
次のテキストを検討してください。
אני רוצה לישון
Intermediary
היא רוצה לישון
אתם, הם
Bye
Hello, world!
test
「file.txt」というファイルにあるとします。
*: "type file.txt" にすると、問題なく出力されます。しかし、Perl プログラムから出力すると、次のようになります。
use strict;
use warnings;
use Encode;
use 5.014;
use utf8;
use autodie;
use warnings qw< FATAL utf8 >;
use open qw< :std :utf8 >;
use feature qw< unicode_strings >;
use warnings 'all';
binmode STDOUT, ':utf8'; # output should be in UTF-8
my $word;
my @array = ( 'אני רוצה לישון', 'Intermediary',
'היא רוצה לישון', 'אתם, הם', 'Bye','Hello, world!', 'test');
foreach $word(@array) {
say $word;
}
Unicode 行 (この場合はヘブライ語) が、次のように部分的に壊れて毎回表示されます。
E:\My Documents\Technical\Perl>perl "hello unicode.pl"
אני רוצה לישון
לישון
�ן
Intermediary
היא רוצה לישון
לישון
�ן
אתם, הם
�ם
Bye
Hello, world!
test
(すべてを UTF-8 で保存します)。
これは非常に奇妙です。助言がありますか?
(これは「Console2」の問題ではありません* - 「通常の」Windows コンソールでも同じ問題が発生しますが、ヘブライ語のグリフが表示されないだけです)。
* 「Console」(「Console2」とも呼ばれる) の使用 - これは、Windows コンソールで Unicode を操作できる便利な小さなユーティリティです 。
** 注: コンソールでは、もちろん次のように言う必要があります。
chcp 65001