- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql登録時の文字化け)
mysql登録時の文字化け
このQ&Aのポイント
- PHPで作成した登録フォームで入力されたデータをmysqlに登録すると、文字化けというか?になってしまいます。
- 環境依存文字を登録するにはどうしたらいいでしょうか?
- 現在の文字コードとPHPの設定、mysqlの文字コードの関係を説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、 mb_convert_encoding("テスト1", "EUCJP-win", "UTF-8") としたら機種依存文字も?にならなくなるかとおもいます。
その他の回答 (2)
- hige_mario
- ベストアンサー率51% (18/35)
回答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 に 書き込んでないですか。これ。
質問者
お礼
回答ありがとうございます。 登録フォーム画面もDBも文字コードをUTFー8にしてあるので、そのまま登録できると思ったのですがその場合は?ではなく完全な文字化けになってしまったので上記のような変換をおこなっています。 確かに、普通に考えたらおかしいのですがなぜか環境依存文字以外は文字化けせずに登録されています。
お礼
回答ありがとうございます。 早速、以下のように試してみましたがDBには?で登録されていました。 insert into test(test1,test2) values( mb_convert_encoding("テスト1", "EUCJP-win", "UTF-8"), mb_convert_encoding("テスト2", "EUCJP-win", "UTF-8"))