いつの間にか時間が過ぎていました。
で、今はたいていUTF-8で統一してサイトを作るのですが、今回、昔のシステムの中にCakeアプリをさっと入れようと思ったのですが、思わぬところではまったので書いておきます。
・MySQL 4.0で、テーブルが EUC-JP(ujis)
・なので、database.php の中で、エンコーディングを ujis に設定した。
・CakePHP 1.3.14 で現在の最新版
・/app/views/layouts/default.ctpの中で、charset=euc-jpも設定した。
なのに、
【問題】edit.php で日本語が消えてしまう!
という現象が発生しました。英語だときちんと表示、編集できます。なんだこりゃ。
最新版で入った問題点かな、とか疑ってしまいました。
viewの中の $this->Form->inputから順番にたどっていったところ、内部で h()をかけていました。そして、
結局のところ、 core.php の中の App.encoding の値を見て、 htmlspecialchars() を実行していることが分かりました。あった、あったよ〜(涙
というわけで、"UTF-8以外のcharsetを使ってCakePHPを使う場合"には、
・MySQLなら、テーブルのエンコードを確認
・database.php の中の encoding の値を確認
・/views/layouts/default.ctp の中の charset の値を確認
・core.php の中の、App.encoding の値を確認
という4点セットが必要です。今の時代に UTF-8じゃないコーディングで使っている人がどれぐらいいるか分かりませんが、備忘録として書いておきます。
ふぅ・・・。