Я работал над анализом файла Excel, в котором есть японский язык в некоторых ячейках.Используя Spreadsheet :: ParseExcel (версия 0.15) (я знаю, что он старше текущей версии), некоторые ячейки с символами ниже:
< 設定 B-100 コ ー ス >
отображаются как:
print Dumper $ oWkc -> {_ Value};
$ VAR1 = "\ x {ff1c}\ x {8a2d} \ x {5b9a} B- \ x {ff11} \ x {30b3} \ x {30fc} \ x {30b9} \ x {ff1e} ";
и
print $ oWkc -> {Val}."\ n";
[- 0
$ VAR1 = "\ x {ff1c} \ x {8a2d} \ x {5b9a} B- \ x {ff13} \ x {30b3} \ x {30fc} \ x {30b9} \ x {ff1e} ";
[- 0
Если я хочу напечатать эти значения в реальном окне, яЯ устанавливаю дескриптор файла STDOUT на «: utf8 », и мой терминал отображает кодировку utf-8 (в противном случае я получаю некоторое предупреждение о «широких символах»).Здесь я должен выбрать ячейки с помощью B-1 или B-2, но я не уверен, что следует установить в моем сценарии, чтобы эти символы можно было рассматривать как то, что я могу видеть их в STDOUT.
В настоящее время я использую регулярное выражение для преобразования этих широких символов в соответствующие им значения ASCII.Например, если я хочу сопоставить B-1, который хранится как 'B- \ x {ff11}', я буду
$oWkc->{_Value} =~ /([AB]-)(\x{ff11}|\x{ff12}|\x{ff13}/
my $lookup = $1.$2;
$lookup =~ s/\x{ff11}/1/;
$lookup =~ s/\x{ff12}/2/;
$lookup =~ s/\x{ff13}/3/;
Для справки, B-1, A-2 и т. Д. Эти значенияисходят из какого-то другого источника и в настоящее время находятся в диапазоне от A | B- [1-3].
Каков стандартный способ обработки этих широких символов?Я не могу использовать кодирование / декодирование и т. Д. Может ли кто-нибудь дать мне какое-то направление?
В настоящее время, хотя я могу выполнить работу с помощью регулярных выражений ...