Две отправные точки:
use
. Аналогичный вопрос об использовании Unicode: Как сделать «использовать My::defaults» с современными значениями по умолчанию perl и utf8?Спецификация PSGIизначально ориентирована на байты. Я отвечаю за кодирование/декодирование всего, поэтому для приложений Plack правильным способом является кодирование вывода и декодирование ввода, например:
используйте Encode;
мое $ приложение = суб {
мой $output = encode_utf8(myapp());
return [ 200, [ 'Content-Type' => 'text/plain' ], [ $str ] ];
};
Правильно ли использовать
use uni::perl; # or any similar
в приложении PSGI и/или в моих модулях?
uni::perl
изменяет ввод-вывод Perl по умолчанию на UTF-8, таким образом:
use open qw(:std :utf8);
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
Сломает ли это что-то в Plack или его промежуточном программном обеспечении? Или это единственный правильный способ написания приложений для Plack с явным кодированием/декодированием при открытии, поэтому без прагмыopen
?