のみまくし日記

毎日が文化祭の前日、そんな環境っていいですよね。この日記は未来の自分へのメッセージです。

2004年08月10日 ()

Sledgeでsjisなurlフィルタ

Sledgeで日本語を uri フィルタ使おうとすると、内部的には euc なので、フィルタで展開される、フェイズとテンプレートを sjis に変換するフェイズが異なるので文字化けしてしまいます。

Template::Plugin::Jcode

とか使えばいんですが

テンプレートの中で

[% USE Jcode %]

とするのにちょっと抵抗アリ。<USE 〜は view の処理なのか?

なので、

$pkg->register_hook(
    BEFORE_DISPATCH => \&sjis_filter,
);

sub sjis_filter {
    my $self = shift;

    $self->tmpl->set_option(
        FILTERS => {
            sjis => sub { return Jcode->new($_[0], 'euc')->sjis }
        }
    );
}

こんな風なプラグイン作ってみた。

[% r.param('q') | sjis | uri %]

気持ちイイ。

Perl 仕事 posted by takefumi | この日記へリンク | コメント(3) | トラックバック(0)

この日記へのトラックバック

この日記へのコメント

viewでやるのは微妙ですね…。めんどくさがりなものでw

posted by Yoshiki at 2008年12月03日 13時16分 #

あ、それスゴく気持わかります。<自分がやるとしたらそうする

# でも TT の uri フィルタもイケてないです。
# r.param('q') に "+" があるとおかしくなるかと

ちなみに、今目の前の席に座っている Template::Plugin::Jcode 作者がこれ読んで微妙な顔付き。。。
ってコメントしてるしw

posted by nipotan at 2008年12月03日 13時16分 #

ぼくはむしろviewですべきだと思うのだけど。。
sjisなuriというviewなんだし。

[% USE Jcode %]する必要がないというだけで、
本質は同じような気がします。

posted by ryu at 2008年12月03日 13時16分 #