名前
Catalyst::Plugin::Charsets::Japanese - 日本語特有の文字コード操作プラグイン
概要
use Catalyst 'Charsets::Japanese';
# 使用する文字コードを設定
MyApp->config->{charsets} = 'UTF-8';
# もしくは、内部で使いたい文字コードと
# 出力データに使いたい文字コードを別々に設定
MyApp->config->{charsets} = {
in => 'EUC-JP',
out => 'Shift_JIS',
};
説明
近年の日本語環境下でのWEB開発において、サーバーサイドで扱う文字コードとして、 EUC-JP, Shift_JIS, UTF-8 が考えられます。 このモジュールを使うと、選択された文字コードによって適切に、 入出力データのコンバート、Content-Typeのセットを自動で処理します。
仕様する文字コードがUTF-8だけの場合は、Catalyst::Plugin::Unicode, サーバーサイドがUTF-8、出力が他の文字コードの場合は、 Catalyst::Plugin::Unicode::Encoding をそれぞれ使用するといいでしょう。
サーバーサイドの文字コードがEUCなどの場合に、このモジュールを使用してください。
設定
次のように config の charsets に 使用したい文字コードを入れます。
MyApp->config->{charsets} = 'UTF-8';
また、一つのアプリケーションで二つの文字コードを使いたい場合もあると思います。
例えば、サーバーのロケールや、DBは、EUCで使う設定になっているが、 出力するレスポンスのHTMLはUTF-8にしたい等。
このモジュールでは、リクエストをパースした後のプログラム中で使用したい文字コード、 出力時のレスポンスの文字コードをそれぞれ設定できます。 設定された文字コードによって適切な処理を自動で行います。
上記のように二つの文字コードを使用したい場合は次のようにします。
MyApp->config->{charsets} = {
in => 'EUC-JP',
out => 'Shift_JIS',
};
このように書くと、出力は Shift_JIS で行います。
また、リクエストを受けたときは、リクエストのパラメータを Shift_JIS から EUC-JP にコンバートします。
charsets アクセサ
コンテキストに charsets アクセサが実装されます。
charsetsアクセサで呼び出せるオブジェクトには、さらに in と out という、それぞれ 内部文字コードオブジェクト、出力文字コードオブジェクトへのアクセサが実装されます。
次のようにすると、使用している文字コードの名前、省略名、Jcode使用時のコンバート用メソッド名を取得できます。
sub default : Private {
my( $self, $c ) = @_;
# 内部処理用の文字コード名( UTF-8, EUC-JP, Shift_JIS )
my $inner_charset = $c->charsets->in->name;
# 内部処理用の文字コード省略名( utf8, euc, sjis )
my $inner_abbrev = $c->charsets->in->abbreviation;
# 内部処理用の文字コードのJcodeにおけるコンバート用メソッド名( utf8, euc, sjis )
my $inner_method = $c->charsets->in->method;
# 同様に、出力用文字コードについて知りたいときも、
# name ,abbreviation, method を使用できます。
my $outer_charset = $c->charsets->out->name;
}
参考
著者
Lyo Kato <lyo.kato@gmail.com>