2 つの出発点:
- Why does modern Perl avoid UTF-8 by default?への彼の回答では、tchrist は、Perl で正しい Unicode 処理を保証するために必要な 52 のことを指摘しました。答えは、定型コードといくつかの
use
ステートメントを示しています。Unicode の使用に関する同様の質問は、How to make "use My::defaults" with modern perl & utf8 defaults? です。 PSGI 仕様は、設計上バイト指向です。すべてをエンコード/デコードするのは私の責任なので、Plack アプリの正しい方法は、出力をエンコードして入力をデコードすることです。
use Encode; my $app = sub { my $output = encode_utf8( myapp() ); return [ 200, [ 'Content-Type' =>'text/plain' ], [ $str ] ]; };
使い方は正しいですか
use uni::perl; # or any similar
PSGI アプリケーションおよび/またはモジュールで?
uni::perl
Perl のデフォルト IO を UTF-8 に変更します。
use open qw(:std :utf8);
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
そうすることで、Plack やそのミドルウェアの何かが壊れますか? open
または、プラグマなしで、オープン時に明示的にエンコード/デコードするPlack用のアプリを作成する唯一の正しい方法ですか?