MySQLでCSVファイルをインポートしたのですが、文字型の属性で入れた値がすべて文字化けを起こしてしまいました。

どんなことを確認、試せばいいのでしょうか?
よく分からなかったのですが、文字コードを確認(?)する以下のコマンドを実行すると、以下のようになりました。
参考URLなどだけでも、歓迎です。

mysql> show variables like 'char%';
+--------------------------+----------------------------------------------------
-----------+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----------+
| character_set_client | sjis
|
| character_set_connection | sjis
|
| character_set_database | sjis
|
| character_set_filesystem | binary
|
| character_set_results | sjis
|
| character_set_server | sjis
|
| character_set_system | utf8
|
| character_sets_dir | C:_Program Files_MySQL_MySQL Server 5.1_share_chars
ets_ |
+--------------------------+----------------------------------------------------

回答の条件
  • 1人2回まで
  • 登録:2008/12/18 15:34:22
  • 終了:2008/12/25 15:35:03

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/12/18 15:46:49

ポイント35pt

以下の情報をお知らせください。

  1. MySQLのバージョンは5.1ですか?
  2. CSVファイルの文字コードは何ですか?(シフトJIS以外ということはありませんか?)
  3. どのようなSQLによってCSVをインポートしましたか?
id:rapuntuleru

回答ありがとうございます。

1.はい。5.1.30です。

2.SJISだと思います。(確認方法はIEで他の文字コード体系にエンコードしてうまく表示されるかどうか。他に知らないので…)

3.LOAD DATA INFILE "c:/data.csv" INTO TABLE data FIELDS TERMINATED BY ',' ENCLOSED BY '"';のようにやりました。

2008/12/18 17:25:45
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/12/18 22:27:26

ポイント35pt

インポート先のテーブルの character set が sjis 以外になっていませんか?


"create table .... default character set sjis;" でテーブルを作成し直すか、

"alter table default character set sjis;" で文字セットを変更してみてください。

id:rapuntuleru

回答ありがとうとざいます。

一応、文字セットを変更して、ファイルもインポートし直したのですが、解決しませんでした…。

2008/12/19 00:57:40
  • id:pahoo
    表示する時に、SJIS以外の文字コードで表示させているということはありませんよね?
  • id:rapuntuleru
    コメントありがとうございます。
    素人ですみません…。それはどうすれば確認できるのでしょうか?
  • id:pahoo
    どのような手順で表示させていますか?
    コマンドラインでMySQLにログインしてSQL(SELECT文)を発行していますか?
    それとも、何らかのツールを使ったり、ブラウザで表示させていますか?
  • id:rapuntuleru
    コメントありがとうございます。
    コマンドプロンプトでMySQLにログインしてSQL文です。
  • id:pahoo
    "show full columns" を実行して、文字化けするカラムのCollationを確認してください。sjis になっていますか?
  • id:rapuntuleru
    ありがとうございます。
    文字型のところは、「 sjis_japanese_ci」と出ているので、sjisになってると思います。

    昨日、とりあえずやってみようと、サーブレットで文字型の値をMySQLで取得して表示させたら、うまく表示できました。
    ということは、コマンドプロンプトで表示させるときだけ、何か設定が誤っているということですよね…。
  • id:pahoo
    MySQLコマンドラインから status を実行してみてください。
    sjis 以外の設定がありませんか?
  • id:rapuntuleru
    何度も付き合っていただきありがとうございます。
    実行してみたところ、
    Server characterset: sjis
    Db characterset: sjis
    Client characterset: sjis
    Conn. characterset: sjis
    TCP port: 3306
    とあったので、sjisで設定されていると思います。
    うーん…。
  • id:pahoo
    うーん‥‥結局、コマンドラインでのみ文字化けしているということですよね。原因が分からないです。
    Windowsをご利用ですよね。DOS窓でdata.csvを表示させても文字化けしませんよね。
    MySQLは本家からダウンロードしたパッケージをご利用ですよね(xamppとかは使ってませんよね)。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません