質問: On MySQLバージョン 5.5.14 MVCはCakePHP2を利用してWebアプリケーションを製作中。 この状況でサーバ側の各階層にある複数の.htaccessファイルには AddDefaultCharset UTF-8 AddType "text/html; charset=UTF-8" .html .php を先頭に記入し、 htmlファイルのmeta要素には このあたりは全て記入済み。 全ファイルBOM無しのUTF-8で保存。 この状況でローカルからフォームでデータを送ると、テスト環境では問題なく日本語が送られるのに、実行環境では文字化けを起こしてしまいます。 「データベースに保存したら」とか、「ファイルに書き出したら」ではなく、サーバー側に送られたデータをdebug()関数で出力すると、その段階でもう文字化けを起こしている感じなんです。 ちなみにサーバー側に送られたデータをmb_detect_encodingで調べると「UTF-8」として認識はされていました。 なのにdebug()関数でそのデータを吐き出させると「あいうえお」が「ããããã」のようにISO-8859-1っぽい化け方で表示されます。 ちなみにmb_internal_encoding()関数で内部文字コードを確認しても「UTF-8」と出力されます。 試しに同じ関数でphpファイル文頭にmb_internal_encoding("utf-8")を指定してもダメでした。 内部的にどんな言語でやりとりされていても、最終的にちゃんとUTF-8で読める文字で保存してくれれば問題ないのですが、そのままDBに保存した所、DB上でも「ããããã」のまま保存されてしまっていました。ちなみにMySQLも設定関係すべてUTF-8で統一しています。 ちょっとどうにも手を尽くしたのにまったく直る方策が思い浮かばないので、どなたか何かこの問題にヒントだけでも与えてくださると助かりますm(_ _)m よろしくお願いします。
回答: こんにちは 本番環境の mbstring.encoding_translation = On もoffにしてみては? https://www.communitycom.jp/2013/09/26/cpi-utf8/ ※情報事態は古いものです。現状とことなるかもです。