【初月無料キャンペーン中】gooドクター

こんにちは。
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ですので、困っています。
どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

gooドクター

A 回答 (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

という設定を教えてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
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
となってます。
これはどういった意味なんでしょうか?
今後同じようなことが起こったときの参考にしたいので、すみませんが教えて頂けないでしょうか?
よろしくお願いします。

お礼日時:2004/08/19 13:54

そのPHPを動作させているサーバの設定はどうなっていますか?


PHPは入力、内部処理、出力で別の文字コードを使用します。
入力がs_jisになっていればソースが読まれる時点で化けますし、
出力がs_jisになっていればs_jisで出力される訳ですから
文字コードを「euc-jp」と指定していれば当然化けます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/19 13:02

そのHTMLファイルはきちんとeuc形式で保存されていますか?


メタタグでeucを指定しても、ファイルがs-jisで保存されていたら文字化けします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/19 12:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング