• ベストアンサー

HTML・PHPの文字化け

こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.3

> eucにするとちゃんと表示されるのですが ということですので、おそらくサーバからは正しく EUC で送られていて、ブラウザの自動判定が失敗しているのだと思います。 ブラウザで、文字コードが「自動選択(日本語)」にチェックが入っているでしょうか? <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> があり、サーバから EUC で送られているなら、ほぼうまく判定してくれるのですが・・・ 変な状態のスクリプトがキャッシュに入っていたりする可能性もあります。 いったんブラウザのキャッシュを削除してみたらどうでしょう? 最後にどうしてもダメなら PHP の最初にて <?php header( "Content-Type: text/html;charset=euc-jp"); にてヘッダを指定してみてください。 それでもダメなら <?php phpinfo(); ?> という phpinfo.php ファイルを作成してサーバにアップしてブラウザからアクセスすることで、サーバの設定を確認してください。 その中の mbstring Multibyte (Japanese) Support enabled Directive Local Value Master Value mbstring.detect_order auto auto mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.substitute_character no value no value という設定を教えてください。

amountainblast
質問者

お礼

ありがとうございます。 phpの最初でヘッダの指定をしたら直りました。 phpinfoでmbstringを見たのですが、 mbstring Multibyte (Japanese) Support enabled Directive Local Value Master Value mbstring.detect_order auto auto mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output no value no value mbstring.internal_encoding EUC-JP EUC-JP mbstring.substitute_character no value no value となってます。 これはどういった意味なんでしょうか? 今後同じようなことが起こったときの参考にしたいので、すみませんが教えて頂けないでしょうか? よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • sisya
  • ベストアンサー率39% (97/244)
回答No.2

そのPHPを動作させているサーバの設定はどうなっていますか? PHPは入力、内部処理、出力で別の文字コードを使用します。 入力がs_jisになっていればソースが読まれる時点で化けますし、 出力がs_jisになっていればs_jisで出力される訳ですから 文字コードを「euc-jp」と指定していれば当然化けます。

amountainblast
質問者

お礼

ありがとうございます。 すみません。サーバの設定はどうやってみればいいのでしょうか? レンタルサーバなのですが、phpinfoで確認するのですか? よろしくお願いします。

すると、全ての回答が全文表示されます。
  • shimayu
  • ベストアンサー率36% (91/252)
回答No.1

そのHTMLファイルはきちんとeuc形式で保存されていますか? メタタグでeucを指定しても、ファイルがs-jisで保存されていたら文字化けします。

amountainblast
質問者

お礼

ありがとうございます。 php_editor135というソフトを使って作っているのですが、保存もeucで保存しています。

すると、全ての回答が全文表示されます。

専門家に質問してみよう