- ベストアンサー
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ですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。
- みんなの回答 (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 という設定を教えてください。
その他の回答 (2)
- sisya
- ベストアンサー率39% (97/244)
そのPHPを動作させているサーバの設定はどうなっていますか? PHPは入力、内部処理、出力で別の文字コードを使用します。 入力がs_jisになっていればソースが読まれる時点で化けますし、 出力がs_jisになっていればs_jisで出力される訳ですから 文字コードを「euc-jp」と指定していれば当然化けます。
お礼
ありがとうございます。 すみません。サーバの設定はどうやってみればいいのでしょうか? レンタルサーバなのですが、phpinfoで確認するのですか? よろしくお願いします。
- shimayu
- ベストアンサー率36% (91/252)
そのHTMLファイルはきちんとeuc形式で保存されていますか? メタタグでeucを指定しても、ファイルがs-jisで保存されていたら文字化けします。
お礼
ありがとうございます。 php_editor135というソフトを使って作っているのですが、保存もeucで保存しています。
お礼
ありがとうございます。 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 となってます。 これはどういった意味なんでしょうか? 今後同じようなことが起こったときの参考にしたいので、すみませんが教えて頂けないでしょうか? よろしくお願いします。