The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

名前

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;
}

参考

Jcode

Catalyst

著者

Lyo Kato <lyo.kato@gmail.com>