Вы говорите Perl, что ваш терминал ожидает UTF-8, но ваш терминал ожидает одно из следующих действий: [1]
Поскольку это все кодовые страницы Windows, я предполагаю, что рассматриваемый терминал - это консоль Windows. Если это так, вы можете узнать, какая кодировка ожидается, используя одну из следующих команд:
chcp
& # x20;
perl -le"use Win32; print Win32::GetACP()"
Добавьте cp
к номеру, чтобы получить имя, которое вы можете использовать с модулем кодирования (который используется слоем :encoding
).
Однако знание ожидаемой кодировки вам не поможет. Ни один из наборов символов этих кодировок не содержит «䷀», поэтому ваш терминал не может отображать «䷀» без изменений.
Вы можете переключить кодировку, ожидаемую консолью Windows, на UTF-8, введя следующую команду:
chcp 65001
Возможно, вам придется настроить шрифт в свойствах консоли.
Я получил список возможных кодировок, используя следующую программу:
use strict;
use warnings;
use feature qw( say );
use utf8;
use Encode qw( decode encode_utf8 );
my $output = encode_utf8("\x{4DC0}");
my $displayed = "䷀";
for my $encoding (Encode->encodings(":all")) {
defined( my $got = eval { decode($encoding, $output, Encode::FB_CROAK|Encode::LEAVE_SRC) } )
or next;
say $encoding if $output eq $displayed;
}
(Убедитесь, что файл закодирован с использованием UTF-8.)