- ベストアンサー
PHPでMysqlにCSVをインポートする際の文字化け問題
- PHPからローカルXAMPPのMYSQLにCSVでデータを上げたいが、日本語が文字化けして表示される。
- 文字化け解消のためにエンコード設定を試したが解決せず、諸先輩方の知恵が必要。
- 現在の環境はApache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7で、phpMyAdminのバージョンは3.5.2.2。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
MySQLのLOAD DATA INFILEにおいては、 character_set_databaseシステム変数の文字コードが使用されます。 おそらくですがxamppでインストールしたMySQLでは、 character_set_database = latin1 が設定されているので、これを変えてあげればいけると思います。 方法としては2つ。 【前提】 ・csvファイルの文字コードは「UTF-8」とする。 【方法1】PHPのスクリプト内で設定する。 ご提示いただいたソースで、 ------------------------------------------------------------- $query = mysql_query('set character_set_database=utf8;'); // ←追加 $file = '"c:/tablea.csv"'; $sql = "LOAD DATA LOCAL INFILE $file INTO TABLE tablea FIELDS TERMINATED BY ',';"; $query = mysql_query($sql); mysql_close($cn); ------------------------------------------------------------- の「set character_set_database=utf8;」を実行する1行を、 「LOAD DATA LOCAL INFILE」でデータを取り込む前に実行してあげる。 【方法2】MySQLの設定を変更する。 MySQLの設定ファイル c:\xampp\mysql\bin\my.ini (適宜ご自分の環境に置き換えてください。) に、 ------------------------------------------------------------- # [client]ブロックに下記の行を追加する default-character-set=utf8 # [mysqld]ブロックに下記の行を追加する character-set-server=utf8 skip-character-set-client-handshake ------------------------------------------------------------- を追記して、MySQLを再起動して、PHPを実行する。 (こちらの場合はソースの変更はいらないかと思います。) 【参考サイト】 http://1000g.5qk.jp/2010/11/04/xampp%E3%81%AEmysql%E3%81%A7%E6%AD%A3%E3%81%97%E3%81%8Futf-8%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/ のどちらかの方法で、いけるかと思いますので、 ご確認いただけますでしょうか? よろしくお願いします!
お礼
最初のやり方で解決しました!ありがとうございます。 なんとお礼を言っていいやら、涙がちょちょぎれています。 やっと足踏みから解放されました本当に助かりました。 重ねてありがとうございました。