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

MySQL文字化けについて

このQ&Aのポイント
  • MySQLの文字化けに関して調査しました。テーブルを作成し、データを挿入している際に、日本語入力のみ文字化けが起こる問題が発生しています。
  • 調査の結果、my.iniファイルに特定の設定を記述することで対処できる可能性が示されています。
  • また、csvファイルを読み込む場合や漢字を含むデータを直接挿入する場合にも文字化けのエラーが発生しています。原因をご存知の方がいらっしゃいましたら、教えていただけると助かります。

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

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

以下を補足説明してください。 (1)MySQLのバージョン  MySQL 4.0以前、4.1、5.0以降では、大幅な機能拡張、一部の仕様変更もあり、MySQL4やMySQL5のように大まかな括りにしないでください。 (2)現在、MySQLで有効になっている文字コード SQLが入力できる状態で、「show variables like '%char%'」といったコマンドを入力すると表示できます。 (3)skip-character-set-client-handshakeを入れる場所が違うと思いますよ? (4)mysql上で直接データを挿入すると OSは何で、どういった方法で入力したのですか?

hanamichi3
質問者

補足

chukenkenkouさま ありがとうございます。 情報が少なくてすみません。 補足致します。 (1)MySQLのバージョン MySQL 5.1 (2)在、MySQLで有効になっている文字コード character_set_client | utf8 character_set_connection | utf8 character_set_database | latin1 character_set_filesystem | binary character_set_results | utf8 character_set_server | utf8 character_set_system | utf8 (3)skip-character-set-client-handshake こちらですが、最初は[mysqld]のところへ入れていたんですが、それでもダメでした・・。 (4)挿入のsql文です。 「insert into テーブル名 (id、type)values (1,'男性’);」 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'type’at row 1 何かお解かりになることがありましたら、宜しくお願いします。

その他の回答 (2)

回答No.3

> character_set_database | latin1 これが問題です。 [mysqld]に、 default-character-set=utf8 が入っていないか、他のキャラクタセットの指定がコメントでなく、生きていませんか?また、[server]にも、相反する指定が残っていませんか? skip-character-set-client-handshakeを入れるなら、[mysqld]に入れてください。 >mysql上で直接データを挿入すると、ローマ字は入るのですが、漢字だとエラーになってしまいます。 前回、OSを確認したのですが、返答がありませんでした。Windowsでコマンドプロンプトを使っている訳ではないですよね? これは、上記のmy.iniの設定とは直接関係しませんけど、念のため。

hanamichi3
質問者

補足

chukenkenkouさま アドバイスありがとうございます。 default-character-set=latin1 が[server]のほうに有りましたが、コメントになっており、他に「latin1」を検索してみたのですが見当たりません。 どこの設定で「character_set_database | latin1」になっているのかが、見つけられずにいます。。 それからOSはWindows Vistaで「MYSQL COMMAND LINE CLIENT」を使用していますが、こちらは何か問題でしょうか? 宜しくお願いします。

  • ogohs
  • ベストアンサー率33% (5/15)
回答No.2

設定ファイルの記述は問題無いと思います。 設定はDBの文字コードを指定しています。 しかし、実際にインサート文を発行する場合どのようなコードでSQLを実行するかは直接は指定していません。 インサート前に、 「set names utf8;」を実行してみてください。 うまくいけば良いですが…。

hanamichi3
質問者

補足

ogohsさま ありがとうございます。 「set names utf8;」を実行してみました。 実行文に対してはOKが出たのですが、下記のSQL文でデータを入れると、エラーが出てしまいます。 「insert into テーブル名 (id、type)values (1,'男性’);」 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'type’at row 1 他に何かお解かりでしたら、教えて頂けますと幸いです。