• 締切済み

ajaxを使用した場合にPHP出力文字の文字化け

サーバー側をPHPにしてajaxシステムを作ろうと思っています。 サーバからのデータ取得時にResponseTextを使用しており、ブラウザの表示での文字化けで困っています。 WinXP SP2 IE6.0では、UTF-8なら表示できますがEUC-JPは文字化けします。 しかし、Win2K IE5.0とWinX PSP1 IE6.0では、UTF-8は文字化けし、EUC-JPなら表示されます。 こっちを立てればあちらが立たずという状況で困っています。 また、直接XMLファイルやテキストファイルを作成し、これを読み込むと どのパソコンでも表示することができました。 phpから出力した文字がうまい具合に読めないのです。 ちなみにRespondeXMLを使用する場合、 XMLファイルを直接読み込むと内容を取得できるのですが、 PHPから出力したXMLデータを取得すると何も表示されません。 いい解決方法はないでしょうか。よろしくお願いいたします。 サーバシステム fedoraCore3 Apache 2.0 PHP 4.3.11 php.iniの文字コード設定はEUC-JP用にしています。

みんなの回答

  • sakakky
  • ベストアンサー率64% (9/14)
回答No.1

状況がわからない部分あるので推測で書きます。 文字化けが起きるのは 1.出力時の文字コードが文字コード設定と食い違っている。(EUC設定なのにデータはUTF8とか) 2.<head>タグ内で文字コード指定していない。またはデータの文字コードと食い違っている。 3.HTMLとJavascriptで文字コードが食い違っている。 1,2だったらバグですという話ですが仮に3であれば <script language="JavaScript" charset="UTF-8">等で解決することがあります。

rei003
質問者

補足

ご回答ありがとうございます。 PHPファイルはすべてUTF-8かEUC-JPに統一しています。 文字出力はPHPで直接 print "あいうabc"; としてテストしています。 HEADタグにはファイルの文字コードにあった属性を指定しています。 また、アドバイスいただいたcharsetを指定してもやはりだめです。 私が質問時に言っていた「文字化け」というのは、画面表示時にエンコードを手動設定すれば直るものではありません。 EUC-JPにすれば表示しないブラウザがあり、かと言ってUTF-8にすれば表示できなかったブラウザは表示できるようになっても、EUC-JPで表示できていたブラウザが表示できなくなるのが不思議です。