- ベストアンサー
phpのソースによって、文字化けしてしまいます
お世話になっております。 PHPとMySQLを利用しております。php.iniでPHP 、my.cnfでMySQL、それぞれの文字コードを「日本語EUC」に設定し、問題なく動作しております。 ただ、PHPスクリプトのソースコードが日本語EUCでない場合、出力結果が???????のように文字化けしてしまいます。 PHPスクリプトのソースの文字コードが、日本語EUCであっても、シフトJISであっても文字化けしないようにするには、どのように設定したらよいでしょうか。 初心者であり、困っております。 どなたか、お助けいただくことはできますでしょうか。 どうか、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> もしかしたら解決するための方法があるかもしれません。 こういう風に書いておいてなんなのですが、 やはり、スクリプトの文字コードは、 シフトJISよりもできればEUC-JPで統一しておく方が よいと思います。 あるスクリプトはシフトJISで、別のスクリプトはEUC-JPという状態ですと、 何かと都合のよくないところがありそうです。
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
ブラウザへの出力結果が文字化けするのでしょうか? 本当は、スクリプトの文字コードは統一する(シフトJIS以外で)のが望ましいと思うのですが、 もしかしたら解決するための方法があるかもしれません。 そこで、php.iniでの、「mbstring何とか」の設定内容を すべて提示していただけますか?
お礼
さっそくご回答いただき、とても感激しています。ありがとうございます。 今までシフトJISで統一していたのですが、シフトJISには問題があるようなので、EUCに統一しようと思いました。しかし、今まではメモ帳で作成していたため、すべてのスクリプトがシフトJISで作られてしまったのだと思います。EUCに変換後、実行すると問題ないようなのですが、なんとか両方に対応できないものでしょうか。初期のphp.iniから変更したのは、次の8点です。初心者なもので、考え方に根本的な問題があるのかもしれませんが、何卒、よろしくお願いいたします。 (1)「;output_handler=」の行を次のように修正する。 ↓ output_handler=mb_output_handler (2)「;default_charset="iso-8859-1"」の記述を修正する。 ↓ default_charset="EUC-JP" (3)「;mbstring.language=Japanese」の行の;を取る。 ↓ mbstring.language=Japanese (4)「;mbstring.internal_encoding=EUC-JP」の行の;を取る。 ↓ mbstring.internal_encoding=EUC-JP (5)「;mbstring.http_input = auto」の行の;を取る。 ↓ mbstring.http_input = auto (6)「;mbstring.http_output = SJIS」の行の;を取る。 ↓ mbstring.http_output = EUC-JP (7)「;mbstring.encoding_translation=Off」の行を次のように修正する。 ↓ mbstring.encoding_translation=On (8)「;mbstring.detect_order=auto」の行の行の;を取る。 ↓ mbstring.detect_order=auto
補足
kisoyasaです。書き忘れてしまいましたが、文字化けは日本語でブラウザに出力するときだけです。たとえばprint "日本語";などのときだけだと思います。 申し訳ありません。どうか、よろしくお願いいたします。
お礼
ご回答ありがとうございます。 私も5C問題やセキュリティのことがあるので、 EUCにしたいのですが、実はXAMPPを使っておりまして、 上のような設定ですと、XAMPPの初期画面が 文字化けしてしまいます。 シフトJISのときは問題がなかったので、 ソースコードの問題なのかと思いまして、 なんとか両方に対応できないか、と思いました。 お世話になります。