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

mysql登録時の文字化け

このQ&Aのポイント
  • PHPで作成した登録フォームで入力されたデータをmysqlに登録すると、文字化けというか?になってしまいます。
  • 環境依存文字を登録するにはどうしたらいいでしょうか?
  • 現在の文字コードとPHPの設定、mysqlの文字コードの関係を説明します。

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

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

とりあえず、 mb_convert_encoding("テスト1", "EUCJP-win", "UTF-8") としたら機種依存文字も?にならなくなるかとおもいます。

shaka001
質問者

お礼

回答ありがとうございます。 早速、以下のように試してみましたがDBには?で登録されていました。 insert into test(test1,test2) values( mb_convert_encoding("テスト1", "EUCJP-win", "UTF-8"), mb_convert_encoding("テスト2", "EUCJP-win", "UTF-8"))

その他の回答 (2)

回答No.3

適切な答えは出来ませんが、僕も似たようなトラブルがあったので念のため。 SQL文のカラム名をバッククオートでくくると回避できたりしませんか? 僕はPostgreSQLからMySQLへ変更する際にでくわしたのですが、元のテーブルのカラム名にMySQLの予約語が含まれていて、MySQL仕様のバッククオートでくくる処理を行なったら回避できました。 ちょっととんちんかんな答えなのかもと思いつつ・・・

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

とりあえず、あれ?と思った部分だけ、ツッコみ入れておきます。 > mysqlの文字コードとしては、DB,テーブルともにutf8_unicode_ci > SQL文のデータ部分にmb_convert_encodingを使用 > 例: > insert into test(test1,test2) values( > mb_convert_encoding("テスト1","EUC-JP","UTF-8"), > mb_convert_encoding("テスト2","EUC-JP","UTF-8")) EUC-JP で DB に 書き込んでないですか。これ。

shaka001
質問者

お礼

回答ありがとうございます。 登録フォーム画面もDBも文字コードをUTFー8にしてあるので、そのまま登録できると思ったのですがその場合は?ではなく完全な文字化けになってしまったので上記のような変換をおこなっています。 確かに、普通に考えたらおかしいのですがなぜか環境依存文字以外は文字化けせずに登録されています。