2012年04月10日

UTF-8以外のエンコーディングの際のチェックポイント

1年ぶりの投稿だー。
いつの間にか時間が過ぎていました。

で、今はたいてい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じゃないコーディングで使っている人がどれぐらいいるか分かりませんが、備忘録として書いておきます。

ふぅ・・・。
posted by SDozono at 16:38| 東京 ☀| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
手(パー)To make a comment: Please type your name and comment. at the validation field box, type 'cakephp'. And there two glay buttons. "Preview"/"Submit". Thank you!