日本語対応

EUC-JPのテンプレートファイル、DBを扱う前提とする。

テンプレートファイル

TTの場合、TTのセットアップで以下のようにするとテンプレートファイル内はdecode()される。

package MyApp::View::TT;
use base 'Catalyst::View::TT';

__PACKAGE__->config({
    ENCODING     => 'euc-jp',
});

データベースクラス

DBI(C)の場合、DBIx::Encodingを使えばDBの入出力のタイミングで自動的にdecode()/encode()してくれる。

my $schema = MyApp::Schema->connect(
      $self->{config}->{dsn},
      $self->{config}->{db_user},
      $self->{config}->{db_password},
      {
          'RootClass'   => 'DBIx::Encoding',
          encoding      => 'euc-jp',
      }
   );

リクエストパラメータとレスポンスボディ

Catalyst::Plugin::Unicode::Encodingを使うと、リクエストパラメータをdecode()して、レスポンスボディ(HTML)をencode()してくれる。

package MyApp;

use Catalyst ('Unicode::Encoding');

その他

後は、コントローラクラスやビジネスロジッククラスでuse encoding 'euc-jp'とかすればよい。

参考

http://wiki.catalystframework.org/wiki/tutorialsandhowtos/Using_Unicode


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-03-21 (月) 05:42:19 (2823d)