こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysqlの文字化けについて

mysqlの文字化けについて教えて下さい。

現在はテーブルを作って、データを挿入している段階なのですが、日本語入力のみ文字化けが起こります。

調べたところ、下記のように「my.ini」に記述すると言うことでしたので、試してみました。

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8

[mysqldump]
default-character-set =utf8
skip-character-set-client-handshake

※そのほかSERVER SECTIONの箇所へも「default-character-set=utf8」を記述。

csvファイルを読み込みすると、日本語の箇所のみ文字化けが起こり、mysql上で直接データを挿入すると、ローマ字は入るのですが、漢字だとエラーになってしまいます。

エラー文
incorrect string value: '入力文字が文字化けして表示’for column 'カラム名’at row 1

何か原因のお解かりになる方、宜しくお願いします。

投稿日時 - 2008-08-06 11:22:30

QNo.4231701

困ってます

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

以下を補足説明してください。

(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は何で、どういった方法で入力したのですか?

投稿日時 - 2008-08-12 06:36:01

補足

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

何かお解かりになることがありましたら、宜しくお願いします。

投稿日時 - 2008-08-14 14:47:25

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

> character_set_database | latin1

これが問題です。

[mysqld]に、
default-character-set=utf8
が入っていないか、他のキャラクタセットの指定がコメントでなく、生きていませんか?また、[server]にも、相反する指定が残っていませんか?

skip-character-set-client-handshakeを入れるなら、[mysqld]に入れてください。

>mysql上で直接データを挿入すると、ローマ字は入るのですが、漢字だとエラーになってしまいます。

前回、OSを確認したのですが、返答がありませんでした。Windowsでコマンドプロンプトを使っている訳ではないですよね?
これは、上記のmy.iniの設定とは直接関係しませんけど、念のため。

投稿日時 - 2008-08-14 19:41:34

補足

chukenkenkouさま

アドバイスありがとうございます。

default-character-set=latin1
が[server]のほうに有りましたが、コメントになっており、他に「latin1」を検索してみたのですが見当たりません。
どこの設定で「character_set_database | latin1」になっているのかが、見つけられずにいます。。

それからOSはWindows Vistaで「MYSQL COMMAND LINE CLIENT」を使用していますが、こちらは何か問題でしょうか?

宜しくお願いします。

投稿日時 - 2008-08-15 15:08:42

ANo.2

設定ファイルの記述は問題無いと思います。
設定はDBの文字コードを指定しています。

しかし、実際にインサート文を発行する場合どのようなコードでSQLを実行するかは直接は指定していません。

インサート前に、
「set names utf8;」を実行してみてください。

うまくいけば良いですが…。

投稿日時 - 2008-08-12 09:53:18

補足

ogohsさま

ありがとうございます。

「set names utf8;」を実行してみました。
実行文に対してはOKが出たのですが、下記のSQL文でデータを入れると、エラーが出てしまいます。
「insert into テーブル名 (id、type)values (1,'男性’);」

エラー文
incorrect string value: '入力文字が文字化けして表示’for column 'type’at row 1

他に何かお解かりでしたら、教えて頂けますと幸いです。

投稿日時 - 2008-08-14 14:39:52

-広告-
-広告-
-広告-
-広告-