Мой языковой стандарт - utf8, поэтому при запуске набора строк строки также локализуются.Поэтому я получаю консольный журнал доступа, подобный следующему:
$ plackup a.psgi
HTTP::Server::PSGI: Accepting connections at http://0:5000/
127.0.0.1 - - [24/júl/2011:12:15:44 +0200] "GET / HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3"
^- garbage
мой частичный a.psgi:
use 5.014;
use warnings;
use utf8;
use open qw(:std :utf8); #the problem....
use Encode;
use Plack::Builder;
use MyApp;
my $runner = MyApp->new(...);
my $app = sub {
$runner->run(shift);
};
builder {$app;};
Проблемная строка - open pragma
.(Мне нужна открытая прагма в MyApp).Без него журнал доступа правильно печатает Júl
, с ним в журнал доступа попадают мусоры.
Итак, как исправить мой журнал доступа?
- для любого без мусорараспечатки локализованных строк дат или
- преобразование сообщений журнала доступа в C-locale
Есть идеи?
Ps: я знаю, чем PSGIявляется байт-ориентированной спецификацией (и MyApp правильно обрабатывает ее), но эта проблема находится за пределами MyApp.