文字コードについて
PHPの内部文字コード:EUC-JP
最終的なhtmlの文字コード:Shift-JIS
とした場合、各種設定は下記のようになるようです。
PHP側の文字コード指定
php.iniファイルで下記のように定義
mbstring.internal_encoding = EUC-JP
mbstring.http_output = SJIS
つまり、PHPの内部処理には『EUC-JP』を使用し、最終的なhtmlへのアウトプット時には『Shift-JIS』に変換して出力するように設定しました。
CakePHPフレームワークでの文字コード指定
app/views/layouts/default.thtmlで下記のように定義(default.htmlはcake/libs/view/templates/layouts/default.thtmlをコピー)
.thtmlをどの文字コードで保存するか
上記の設定より、私は当然『Shift-JIS』にて.thtmlファイルを作成するものと思っていました。
しかしながら、『Shift-JIS』にて.thtmlファイルを作成すると、文字化けが発生してしまいました。
原因は、どうやら実際はthtmlはphpにて処理(つまりこの場合、EUC-JPで処理)され、htmに変換されるようです。
つまり、thtmlファイルは上記設定では『EUC-JP』でファイルを作成する必要があるようです。
(php.iniでmbstring.internal_encoding = UTF-8とした場合は、thtmlファイルはUTF-8で作成することになると思います。)
もっと汎用的な言い方では、thtmlファイルはPHPの内部エンコーディング設定と同じ文字コードで作成する必要がある、ということになるでしょうか。