Прагма utf8 и кодировки utf8 на файловых дескрипторах меня смутили. Например, это, по-видимому, простой код ...
use utf8;
print qq[fü];
Для ясности, шестнадцатеричный дамп на "fü" равен 66 c3 bc
, который, если я не ошибаюсь, является правильным UTF8.
Это печатает 66 fc
, который не является UTF8, а Unicode или, возможно, Latin-1. Выключите use utf8
, и я получу 66 c3 bc
. Это противоположно тому, что я ожидал.
Теперь давайте добавим в файл-дескриптор pramgas.
use utf8;
binmode *STDOUT, ':encoding(utf8)';
print qq[fü];
Теперь я получаю 66 c3 bc
. Но удалите use utf8
, и я получу 66 c3 83 c2 bc
, что не имеет никакого смысла для меня.
Как правильно сделать мой код DWIM с UTF8?
PS Моя локаль установлена на "en_US.UTF-8" и Perl 5.10.1.