CakePHP 文字化け問題

仕事で使うことになった CakePHP。これからしばらく付き合うことになりそうだ。

CakePHPRails から強い影響を受けて作られた PHP の Web フレームワークである。このため Rails 使いにとっては、比較的容易に習得できる(はず)である。

まずは、わかりやすいチュートリアルに従って、実際に動かしてみる。

順調に作業が進んだが、一点つまづいた点がある。日本語のデータを表示するときに文字化けするのである。あれこれやってみたが、結論としては、app/config/database.php で 'encoding' => 'utf8' と指定したのが問題らしい。この指定をなくしたところ、正常に文字が表示された。

もちろん、データベースには UTF-8 でデータを格納している。まったく不思議である。チュートリアルにはわざわざ utf8 を指定せよと丁寧に書かれているのだが・・・。

私の環境は次のとおり。

実は、MySQL でも PHP でも文字コードに関する設定は一切行っていない。実際にはいろいろいじってみたのだがうまく行かなかったのだ。すべてデフォルトにしたところ、うまく行った。以下は、phpinfo() による mbstring 拡張の設定状況。

mbstring

Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 4.4.4
Multibyte regex (oniguruma) backtrack check On

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Directive Local Value Master Value
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding no value no value
mbstring.language neutral neutral
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value

正直、これで本当にいいのかはよくわからない。当面様子を見るつもりである。