MENTA での開発で困った3点

| 【1分で読めるよ!】 | コメント(0) | トラックバック(0)

 MENTAで開発をしていて引っかかったこととその解決法を3点だけ書いておきます。

  • MENTA::Templateで「?=r」が使用できない
  • config.pl と menta.cgi
  • テンプレートで日本語が文字化け(UTF-8)

MENTA::Templateで「?=r」が使用できない

 MENTA::Templateで「?=」を使用すると、Perlコードの戻り値をそのまま出力できます。しかし、この際にMojo::Templateと違うのは、その出力をHTMLエンコードする点です。

<!-- $titleを縦書きで表示 -->
?= join "<br>", split //, $title;

 これを出力する際、「<br>」を「&lt;br&gt;」に変換してしまいます。これを防ぐため、MENTA::Templateでは「?=r」という書き方もあるみたいですが……動作しません。仕様が変わったのかな?

 とりあえずの対策として、複数行に分けるか、「<?= ?>」でエンコードしてもいい部分だけインラインにするといいです。

config.pl と menta.cgi

 MENTAのルートにconfig.plというファイルがあり、MENTAの設定ができそうな内容が書いてありますが、これを書き換えて記述しても反映されません。

 設定はmenta.cgiに書いたほうがいいです。

テンプレートで日本語が文字化けする(UTF-8)

 プログラムからテンプレートに渡す日本語の文字列を、テンプレートで出力しようとすると文字化けする現象が起きました。プログラムも、プラグインも、テンプレートも、MENTA自体も、全部UTF-8で書かれています。また、テンプレートに埋め込まれた日本語は化けません。

 cgi-server.plを動かしていたCygwinでの文字コードがShift_JISだからかな? と思ってUTF-8化してみたけど変わらず。

 いろいろ試してみると、UTF-8フラグが問題のようでした。コントローラに use utf8; を追記すると文字化けが解消されました。

トラックバック(0)

トラックバックURL: http://e-arrows.sakura.ne.jp/mt/mt-tb.cgi/77

コメントする

このブログ記事について このアーカイブについて

このページは、深町英太郎が2009年2月 5日 11:17に書いたブログ記事です。

ひとつ前のブログ記事は「Perl 軽量Webフレームワーク MENTA を使ってみたよ」です。

次のブログ記事は「MENTA でセッション管理 (session.pl)」です。

Ariel Labs
Name:深町英太郎
Age:23歳
Living:京都府
Company:はてな
Hatena Id:id:nitro_idiot
Facebook:eitarow.fukamachi
mixi:ID:6756132
Twitter:nitro_idiot
GitHub:fukamachi
LinkedIn:eitarowfukamachi

Techonrati

Technorati search

» リンクしているブログ

Powered by Movable Type 4.23-ja