Я пытаюсь получить Юникода в качестве аргументов в PERL скрипт:Perl поддержка юникода из консоли (@ARGV)/Windows/
C:\>perl test.pl ö
#----
# test.pl
#----
#!/usr/bin/perl
use warnings;
use strict;
my ($name, $number) = @ARGV;
if (not defined $name) {
die "Need name\n";
}
if (defined $number) {
print "Save '$name' and '$number'\n";
# save name/number in database
exit;
}
if ($name eq 'ö') {
print "Fetch umlaut 'oe'\n";
} elsif ($name eq 'o') {
print "Fetch simple 'o'\n";
} else {
print "Fetch other '$name'\n";
}
print "ü";
и я получаю результат:
Fetch simple 'o'
ü
I 'протестировал код (алгоритм) в python 3, и он работает, поэтому я получаю «ö». Но, очевидно, в perl есть что-то большее, что я должен добавить или установить. Не имеет значения, это Strawberry Perl или ActiveState Perl. Я получаю тот же результат.
Заранее благодарен!
У вас есть мнение относительно 'Encode :: Locale'? Кажется, он заменяет несколько строк кода, которые у вас есть. – tjd
@tjd, Похоже, вы действительно можете это использовать. Не стесняйтесь публиковать ответ, и я буду продвигать и, возможно, даже удалить мой! – ikegami
Это не работает. Я получаю только Fetch simple 'o' ü Очевидно, что он автоматически анализирует «ö» на «o». Это perl 5, версия 24, subversion 0 (v5.24.0), созданная для MSWin32-x64-multi-thread. – Banish