• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPとMySQLの文字化け)

PHPとMySQLの文字化け問題

このQ&Aのポイント
  • PHPファイルの文字コードをShift_JISからEUC-JPに変更したが、文字化けとJavaScriptの動作不良が発生している。
  • DBから呼び出しているデータは文字化けしないが、その他の部分がすべて文字化けしてしまっている。
  • MySQLの読み込み時にEUC-JPという文字コードを指定しているが、どうしても問題が解決しない。

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

  • ベストアンサー
回答No.2

>各phpのファイルは、最後に$body で書き出す記述をしているので、 >$body = mb_convert_encoding($body,"SJIS","EUC-JP"); つまりMySQLの文字コードを EUC-JP で出力して SJIS に変換して表示しているのですよね。 その場合ページの文字コードはSJISですから <META http-equiv='Content-Type' content='text/html; charset=EUC-JP'> ではなく <META http-equiv='Content-Type' content='text/html; charset=Shift_JIS'> と宣言しなければならないのではないでしょうか?

super_car
質問者

お礼

ご回答ありがとうございます。 全体をcharset=Shift_JIS'で宣言して、データベースを読み込む際にはEUC-JP、呼び出した後にひとつづつ、mb_convert_encodingでSJISに変換したら、うまくいきました。ありがとうございました。

その他の回答 (1)

  • yutaka303
  • ベストアンサー率45% (15/33)
回答No.1

PHPもMySQLもそれほどよく知らないので的外れだったらごめんなさい。SJISで作ったものをEUC-JPで読み込もうとしたら文字化けするのは当然のような気がします。該当ファイルをEUC-JPで作り直したらうまくいくのではないでしょうか。

super_car
質問者

補足

作ったPHPファイルの中には、インクルードファイルをSJISからEUC-JPに変えただけで動いているファイルもあるのですが・・・。 文字化けしていないPHPファイルは、最後に$body で書き出す記述をしていないものです。htmlのテーブルのなかに、<?php $data ?>と書き込んでいるタイプのものです。それは、DBから呼び出しているデータもhtmlの文字も文字化けしていません。(説明が下手で申し訳ありません)