"UTF8" flag に起因する既知の問題のようだ。 Perl 5.8.4 において Template Toolkit 2.14 だと化けるが、2.13 以前 (2.13 と 2.10 で確認)だと大丈夫。 Template::Providerを継承して UTF8 フラグまわりの処理をする自前の Provider を作ってそれを使うという手もあるようだが、今回は 2.13 を使う事で対処。
#前に社内wikiに書いておいたのを公開してみるテスト。 Catalystでマルチバイトを扱う機会があるのは主に ユーザーがフォームで入力する値 ($c->req->param()) データベースからの入出力 (DBIx::Class) それ以外の文字列の評価 View::TTによる出力の生成 FillInFormによるフォームの埋め込み HTTPレスポンス です。 ここでは以下の条件でまとめてみました。 文字コードはUTF8に統一 データベースにはmysqlを使用 下準備 テンプレート、perlのコードは全てUTF8で書きます。 mysqlの文字コードの指定は/etc/my.cnfに [mysqld] default-character-set = utf8 skip-character-set-client-handshake [mysql] default-character-set
先に言っておくと、hide-kさんのまとめが分かりやすいです。 http://blog.hide-k.net/archives/2007/03/catalyst_2.php 最もCatalystを使う際にと言う事ですが。 utf8フラグを立てないでTTを使う場合 ソース自身はutf8で書くんですけど、 #!/usr/bin/perl use strict; use warnings; use Carp::Clan; use Path::Class; use Template; my $base_dir = dir($ENV{HOME}, qw/tmp tt_test/); my $template = Template->new({ COMPILE_DIR => $base_dir->subdir('tt.cache')->stringify, COMPILE_EXT => 'c', })
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く