• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルを見ると文字がぐちゃぐちゃ)

MySQLでテーブルを見ると文字がぐちゃぐちゃ

このQ&Aのポイント
  • MySQLでフォームデータを登録すると、テーブルを見ると文字が乱れて表示されます。PHPを介して表示すると問題なく表示されるため、PHPがデコード・エンコードしている可能性があります。それともMySQLの仕様なのでしょうか?
  • 特定のアドレスから受信したメールをテーブルに登録すると、データは正しく登録されます。しかし、フォームデータと同じようなデータ形式に変換して登録する方法を知りたいです。
  • HTMLの出力はEUC-JPのようで、データ登録時には特定のルーチンを通しています。受信メールを登録する場合はこのルーチンを介していません。

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

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

> S-JISがいいのか、EUC-JPがいいのか?変更は簡単なのですが、どちらにすればよいか迷ってしまいます。  もちろん、EUC-JPでしょう。PHPはサーバーサイドスクリプトであるのでWindow'sでもLinuxでも対応できるコード体系でコーディングする習慣をつけておくほうがいいと思います。 > imap関数を使い、メールサーバに接続→メールのヘッダ、本文を読み込み→同一テーブルにインサート > メールはおそらくS-JISで記載されているのでしょうか?  MacやLinuxマシンからメールが送信されることも考えられるので、元の文字コードを考慮しながらEUC-JPでテーブルに格納するのがいいでしょう。 > トリガーはあるリンクをクリックすると上記流れをやってくれます。  WindowsやLinuxのタスクスケジューラを利用して処理するのがいいと思います。  もっと時間間隔を短くしたいときは、「受信したメールをインサートする」phpファイルをサブフレームとして表示するHTMLファイルを作成し、そのHTMLファイル内に自分自身を一定時間ごとに更新するJavaScriptを埋め込んでおけばいいと思います。 だ

Scotty_99
質問者

お礼

文字コードといういままで意識していなかったものを 現実的に教えてくださり、目からうろこが落ちる気分です。 これから文字コードを意識し開発に邁進していく所存です。

その他の回答 (1)

回答No.1

 質問2は題意が不明確(メールをインサートする:あまり聞かない表現など)なので、質問1にだけ答えようと思います。 質問1  PHPやMysqlが動作しているOS(Windows's系かLinux系か)がわかりませんが、入門編に使うWindow's→Apache→PHP→Mysqlで動作していると仮定して答えようと思います。「テーブルを見ると」の方法を「コマンドプロンプトでコマンドラインモードのMysql」を使用したとします。  コマンドプロンプトはS-JISしか正しく表示できません。また、コマンドパラメタはS-JISで扱われます。これに対し「HTMLの出力はEUC-JP」ということなので、テーブルへの格納もEUC-JPで行われます。したがって、漢字フィールドを含む処理は、漢字フィールドが正しく表示・更新されません。このため、SOURCE命令が容易されていて、スクリプトファイルをEUC-JPで用意することによりMysqlをEUC-JP系で操作することができます。

Scotty_99
質問者

お礼

なるほど。回答ありがとうございました。質問1についてよく理解できました。 今回本にあったスクリプトを改造していますが、デフォルトでEUC-JPでした。S-JISに統一した方がよろしいでしょうか? 質問2についてまた補足させて頂きます。

Scotty_99
質問者

補足

質問2について補足 メールをインサートするとは? imap関数を使い、メールサーバに接続→メールのヘッダ、本文を読み込み→同一テーブルにインサート したという理屈ですが、わかりますでしょうか? 特定の“メールアドレス”にメールを送れば、blogを更新できるシステムに作り変えたわけです。トリガーはあるリンクをクリックすると上記流れをやってくれます。 メールはおそらくS-JISで記載されているのでしょうか? だから、ちゃんとした文字でテーブルに登録される? S-JISがいいのか、EUC-JPがいいのか? 変更は簡単なのですが、どちらにすればよいか迷ってしまいます。

関連するQ&A