use utf8;
просто сообщает Perl, что ваш источник закодирован с использованием UTF-8.
Он также не работает на unix. Есть несколько строк, которые не будут печататься правильно (print chr(0xE9);
), и большинство из них будут печатать предупреждение «Широкий символ» (print chr(0x2660);
). Вам необходимо декодировать ваши входы и кодировать ваши выходы.
В системах Unix, это usuaully
use open ':std', ':encoding(UTF-8)';
В системе Windows, вы должны будете использовать chcp
, чтобы найти страницу символов в консоли. (. 437 для меня)
use open ':std', ':encoding(cp437)'; # Encoding used by console
use open IO => ':encoding(cp1252)'; # Encoding used by files
Вы проверили ответы этого вопроса: http://stackoverflow.com/questions/627661/how-can-i-output-utf-8-from-perl –
Другой вопрос учитывая диспетчеризацию юникода в консоли Windows: http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how –
Ненависть к ненависти - ненавижу эту 'utf8' в прекрасном' Perl' – gaussblurinc