質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.32%

MySQLで文字コード設定をすべてUTF-8にしても、文字化けしてしまいます。

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 23K+

Naoki_Tsuchi

score 15

前提・実現したいこと

XAMPPのmysql(MariaDB)に、CSVファイルのデータを取り込みたいです。
しかし日本語のデータが文字化けしてしまいます。

環境は
Windows7
XAMPP v3.2.2
mysql(MariaDB)
です。不足があればご指摘ください。

発生している問題・エラーメッセージ

csvデータもutf8、mysql側の設定もすべてutf8なのに、日本語のデータがmysqlのテーブル上で文字化けしてしまいます。

該当のソースコード

my.iniの設定は以下のとおりです。

[client] 
# password       = your_password 
port            = 3306
socket          = "C:/xampp/mysql/mysql.sock"
default-character-set=utf8

[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql" 
tmpdir = "C:/xampp/tmp" 
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
character-set-server=utf8
#default-character-set=utf8
init-connect=SET NAMES utf8
collation_server=utf8_general_ci
skip-character-set-client-handshake

[mysqldump]
quick
max_allowed_packet = 16M
default-character-set = utf8
character_set_server=utf8

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set = utf8

## UTF 8 Settings
#init-connect=SET NAMES utf8
#collation_server=utf8_general_ci
character_set_server=utf8
#skip-character-set-client-handshake
character_sets-dir="C:/xampp/mysql/share/charsets"

試したこと

「xamppの文字化け回避メモ」
http://qiita.com/guzuri/items/643c1311224e8d482278
「MySQLで文字化けしたときの対処法」
http://qiita.com/WizowozY/items/5d7224be92aa8364a42a

以上のサイトに書いてあることはすべて試したつもりです。

mysql上で

show variables like "chara%";

と入力すると以下のとおりの結果が出ます。
character_set_client:utf8
character_set_connection:utf8
character_set_database:utf8
character_set_filesystem:binary
character_set_results:utf8
character_set_server:utf8
character_set_system:utf8
character_set_dir:C:\xampp\mysql\share\charsets\

上のとおり、すべてutf8に設定されているのですが、どこで文字化けが起きてしまっているのでしょうか…

補足情報(言語/FW/ツール等のバージョンなど)

環境は
Windows7
XAMPP v3.2.2
mysql(MariaDB)
です。不足があればご指摘ください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kaz.Suenaga

    2016/06/12 21:15

    CSVファイルの取り込み方法はどういったものでしょうか。

    キャンセル

  • Naoki_Tsuchi

    2016/06/12 21:19

    返信ありがとうございます。

    c:/xampp/mysql/data/sampledb(データベース名)
    に.csvファイルを入れて、
    LOAD DATA INFILE "T01Prefecture.csv"
    INTO TABLE t01 FIELDS TERMINATED BY ","
    LINES TERMINATED BY "\r\n";
    で取り込んでいます。

    キャンセル

  • kaz.Suenaga

    2016/06/12 21:25 編集

    もう1点、文字化けはどのような化け方をするのでしょうか。
    あと、CSVファイルがUTF-8であることはどうやって確認していますか。

    キャンセル

  • Naoki_Tsuchi

    2016/06/12 21:36

    化け方については説明しづらいのですが、難しい漢字がたくさんならぶ感じです。
    また、csvファイルに関しては、
    「プログラムから開く」→メモ帳→名前をつけて保存→文字コードの欄がUTF-8になることを確認して保存しました。

    キャンセル

回答 4

checkベストアンサー

0

メモ帳の場合、UTF-8を選択しても「BOM」と呼ばれるデータがついた状態のUTF-8になっているかと思います。

何か別のテキストエディタを使って、UTF-8(BOMなし)改行コードLFと言われる形式で保存したうえで取り込めば、正常に取り込まれるのではないでしょうか。

参考) http://q.hatena.ne.jp/1269678207

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/12 22:08

    返信ありがとうございます。
    いま、やってみています。BOM有り無しは確かに大きく影響してそうです。解決したらまた連絡させていただきます!

    キャンセル

0

character_set_databaseが記載されていませんが、おそらくcharacter_set_databaseをutf-8にすれば解決できるかと思いますのでお試しください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/12 21:50

    すみません、character_set_databaseもutf8です。
    質問文で誤記をしてしまっていました。

    キャンセル

0

この状況とあった解決方法かはわからないですが、mysqlのutf8は4バイト文字に対応していないため絵文字などを入れると文字化けします。
この場合、文字コードをutf8mb4として扱うと解決します。
参考1:utf8m4について
参考2:MySQLの具体的な設定について

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/12 22:10

    ありがとうございます。参考にさせていただきます。
    解決したら連絡させていただきます!

    キャンセル

0

MS Excel の文字コードは Shift-JIS ですのでご注意ください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る