QA@IT

PHP UTF-8の文字化けについて

3404 PV

UTF-8で作成したPHPファイルをレンタルサーバーのテスト環境にアップしました。
そのレンタルサーバーのmbstringの設定が以下の通りでした。

mbstring.detect_order       JIS,EUC-JP,SJIS
mbstring.http_input         auto
mbstring.http_output        SJIS
mbstring.internal_encoding  SJIS
mbstring.script_encoding    EUC-JP

そのため、htaccessを設置し、以下の通りに変更いたしました。

mbstring.detect_order       UTF-8,JIS,EUC-JP,SJIS
mbstring.http_input         auto
mbstring.http_output        UTF-8
mbstring.internal_encoding  UTF-8
mbstring.script_encoding    UTF-8

これにより、文字化けは一度解消されたのですが
ファイル一式を本番環境に移行させた際に、再度文字化けが発生してしまいました。
確認したところ、phpinfoのmbstringはhtaccessを設置後の状態と全く同じでした。

default_charsetはhtaccess設置前、設置後共に「no value」となっております。

事情により、サーバーへ直接アクセスが出来ず、phpinfoと文字化け画面のキャプチャしか
こちらも情報提供をいただいておらず、困っています。

情報が少なく申し訳ないのですが、文字化け解消の対策方法として
追加で施せる方法がありましたら、ご教授いただけませんでしょうか。

  • もらえる情報が少ないとの事ですが、文字化けはUTF8のデータで起きてるんでしょうか?たとえばブラウザのエンコーディングはUTF8になっていてますか?
    あとはページのキャプチャではなく名前を付けて保存を送ってもらうとか。
    -
  • 返答が遅くなり大変失礼いたしました。
    試行錯誤した結果、文字化けを解消することが出来ました。
    アドバイス、ありがとうございました。
    -

回答

あまり良い対策では無いですが、サーバ設定を直接いじれないのであれば、PHPコード内で

mb_detect_order('UTF-8,JIS,EUC-JP,SJIS');
mb_http_output('UTF-8');
mb_internal_encoding('UTF-8');
header("Content-Type: text/html; charset=UTF-8");

…あたりを実行する、という手があります。

編集 履歴 (0)
  • 返答が遅くなり大変失礼いたしました。
    ご教授いただいた方法ではありませんでしたが、
    無事に文字化けを解消することが出来ました。
    どうもありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。