趣旨はタイトルの通りなのですが詳細を・・・
テスト環境
xampp
PHPバージョン 5.5.9
php.iniの日本語エンコードに関する設定
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = Off
MySQLバージョン 5.5.16
サーバー側実行環境
CPIレンタルサーバ
PHPバージョン 5.5.16
php.iniの日本語エンコードに関する設定
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
MySQLバージョン 5.5.14
MVCはCakePHP2を利用してWebアプリケーションを製作中。
この状況でサーバ側の各階層にある複数の.htaccessファイルには
AddDefaultCharset UTF-8
AddType "text/html; charset=UTF-8" .html .php
を先頭に記入し、
htmlファイルのmeta要素には
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
このあたりは全て記入済み。
全ファイル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
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/29 09:47
2017/05/29 10:01