- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPとMySQLの文字化け)
PHPとMySQLの文字化け問題
このQ&Aのポイント
- PHPファイルの文字コードをShift_JISからEUC-JPに変更したが、文字化けとJavaScriptの動作不良が発生している。
- DBから呼び出しているデータは文字化けしないが、その他の部分がすべて文字化けしてしまっている。
- MySQLの読み込み時にEUC-JPという文字コードを指定しているが、どうしても問題が解決しない。
- みんなの回答 (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'> と宣言しなければならないのではないでしょうか?
その他の回答 (1)
- yutaka303
- ベストアンサー率45% (15/33)
回答No.1
PHPもMySQLもそれほどよく知らないので的外れだったらごめんなさい。SJISで作ったものをEUC-JPで読み込もうとしたら文字化けするのは当然のような気がします。該当ファイルをEUC-JPで作り直したらうまくいくのではないでしょうか。
質問者
補足
作ったPHPファイルの中には、インクルードファイルをSJISからEUC-JPに変えただけで動いているファイルもあるのですが・・・。 文字化けしていないPHPファイルは、最後に$body で書き出す記述をしていないものです。htmlのテーブルのなかに、<?php $data ?>と書き込んでいるタイプのものです。それは、DBから呼び出しているデータもhtmlの文字も文字化けしていません。(説明が下手で申し訳ありません)
お礼
ご回答ありがとうございます。 全体をcharset=Shift_JIS'で宣言して、データベースを読み込む際にはEUC-JP、呼び出した後にひとつづつ、mb_convert_encodingでSJISに変換したら、うまくいきました。ありがとうございました。