Jifty。utf8モデルをPC、携帯、両用に。

| コメント(0)

Jiftyの吐くHTMLはUTF-8。

% w3m -dump_head http://localhost:8888/
Content-Type: text/html; charset=utf-8

% w3m -dump_source http://localhost:8888/ | grep -i charset
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

携帯用にShift_JISを吐くには2点修正。

1点目。share/web/templates/以下の個別のテンプレートに下を記述。
ファイル自体はUTF-8。Shift_JISに変換されて吐かれる。
ヘッダと内容のエンコーディングがShift_JISになる。

<%init>
$r->content_type('text/html; charset=Shift_JIS');
</%init>

2点目。
/Library/Perl/5.8.6/auto/Jifty/web/templates/_elements/header
をカレントディレクトリのそれへコピーし編集。
HTMLのmetaダグが変更される。

あとはフォームからの入力をShift_JIS->utf8に。
Dispatcherのbeforeのタイミングだと既にutf8 flag onで格納されてしまっているから
もっと早い段階で変換するのがよい。
フォームタグにcharset=Shift_JISを含めればちゃんと解釈されてutf8になる。
具体的には以下の修正。

Jifty::Request::from_cgiを修正。
$ENV{CONTENT_TYPE} = $ENV{CONTENT_TYPE}."; charset=Shift_JIS";
のように、$ENV{CONTENT_TYPE}に付け足す。

以上で、utf8モデルをPC、携帯、両用に出来るハズ。

コメントする