- ベストアンサー
MySQLコマンドの文字化け問題とは?
- WinXPでxampp1.6.6aを使っています。文字コードはutf8で設定したく説明しているサイトを探しmy.cnfを下記のように修正および追加しました。[client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
- phpadminから確認すると日本語も文字化けせずに表示されるのですが、なぜかコマンドから確認すると日本語が文字化けしてしまいます。おなじような質問がありなんとかできるものかと思い確認したのですが、特に設定が間違っているようではなく解決策がみつかりません・・・文字化けせずに表示させるためにはどうすればいのでしょうか?
- show variables like 'char%'の結果は下記の通りです。+--------------------------+----------------------------------------------+| Variable_name | Value |+--------------------------+----------------------------------------------+| 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_sets_dir | C:\Program Files\xampp\mysql\share\charsets\ |+--------------------------+----------------------------------------------+
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
特におかしいところは見当たりませんね。 同じようにDB、テーブルを作成し、phpMyAdminからデータを入れてみましたが、プロンプトから同様の手順で特に文字化けは見られませんでした。 となると、実データが無いのでこれ以上は解決策を見つけるのが難しいかなと思います。ですので、解決の参考になればと思うことを記載します。 ・テーブルの中の実際に入っている値の文字コードがutr8か確認してみる。 select hex(CULUM_NAME) from car_table; ※文字コードがutf8か確認 ・テーブルの中身をダンプして、エディタで確認し文字コードを調べる。 ・コマンドプロンプトからDB、テーブルの作成でデータを入れて、phpMyAdminで見てみる。 他にもいろいろな方法があると思います。 力になれなくてすみません。
その他の回答 (3)
- SeafooD3
- ベストアンサー率75% (6/8)
まだなおりませんか。。。 念のため、下記の情報をいただけますか? ・MySQLのバージョン ・データベース構造 SHOW CREATE DATABASE DATABASE_NAME; ・テーブル構造 SHOW CREATE TABLE TABLE_NAME; 力になれるかわかりませんが、ヒントが見つかればと思います。
補足
何度もお返事頂きすみません^^; データベース、テーブル共に名前はcar_tableです。 MySQL クライアントのバージョン: 5.0.51a mysql> SET NAMES SJIS; Query OK, 0 rows affected (0.02 sec) mysql> USE car_table Database changed mysql> SHOW CREATE DATABASE car_table; +-----------+------------------------------------------------------------------- -------------------------+ | Database | Create Database | +-----------+------------------------------------------------------------------- -------------------------+ | car_table | CREATE DATABASE `car_table` /*!40100 DEFAULT CHARACTER SET utf8 CO LLATE utf8_unicode_ci */ | +-----------+------------------------------------------------------------------- -------------------------+ 1 row in set (0.01 sec) mysql> SHOW CREATE TABLE car_table; +-----------+------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -----+ | Table | Create Table | +-----------+------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -----+ | car_table | CREATE TABLE `car_table` ( `id` int(11) NOT NULL auto_increment, `maker` varchar(10) collate utf8_unicode_ci default NULL, `country` varchar(10) collate utf8_unicode_ci default NULL, `type` varchar(10) collate utf8_unicode_ci default NULL, `color` varchar(10) collate utf8_unicode_ci default NULL, `comment` varchar(100) collate utf8_unicode_ci default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +-----------+------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -----+ 1 row in set (0.06 sec)
- SeafooD3
- ベストアンサー率75% (6/8)
先ほど回答したものです。 ちゃんとした回答になっていなかったみたいですね。 ごめんなさい。 コマンドプロンプト側からクライアントキャラクタをセットします。 SET NAMES SJIS; これで、MySQLが文字コードをクライアントキャラクタに合わせて変換してくれるので文字化けは解消されると思います。
補足
お返事ありがとうございます。 以下の手順で試してみたのですが文字化けが解消されませんでした^^; mysql> SET NAMES SJIS; Query OK, 0 rows affected (0.00 sec) mysql> USE db //データベース(db)に入る Database changed mysql> SELECT * FROM table; //db内のテーブル(table)の内容を表示 データベース(db)はphpmyadminで作っており作成時の照合順序は utf8_unicode_ciです。
- SeafooD3
- ベストアンサー率75% (6/8)
こんにちは。 mysqlコマンドとは、Windowsのコマンドプロンプトだと思いますが、 Windowsのコマンドプロンプトは、取り扱っている文字コードがSjisなので、 文字化けはしてしまいます。
補足
お返事ありがとうございます。 >mysqlコマンドとは、Windowsのコマンドプロンプトだと思いますが コマンドプロンプトのことです。略して書いてしまいすみません。 >Windowsのコマンドプロンプトは、取り扱っている文字コードがSjisなので、 だからコマンドプロンプトだけ文字化けしてしまうのですね・・・ サイトはutf8なのでコマンドプロンプトで確認するときはsjisという 設定にするにはどこを変更すればいいのでしょうか?
お礼
原因がわからなかったので一度アンインストールし最新版の 1.6.7が出ていたのでそちらを入れて同じ設定をして試したところ コマンドプロンプトでSET NAMES SJIS;を入れてやると日本語も 正常に表示されることが確認できました! (SET NAMES SJIS;をいれないと文字化けしてます) 理由がわからないまま解決?してしまい複雑な感じですがおかげ様で なんとか解決することができました。 以前にも原因がわからないトラブルがありその際も一度 アンインストールすることにより解決したので原因こそ謎なものの なにかあるのでしょうね・・・w
補足
何度も本当にありがとうございます。 訳もわからず悩んでいたので本当に感謝です! phpmyadminでデータベースを作成後(照合順序はutf8_unicode_ci) 以下のsqlファイル(utf8で保存)をインポートしております。 CREATE TABLE car_table ( id int NOT NULL auto_increment, maker varchar(10), country varchar(10), type varchar(10), color varchar(10), comment varchar(100), PRIMARY KEY (id) ); INSERT INTO car_table (maker, country, type, color, comment) VALUES('ベンツ', 'ドイツ', '4ドア', '黒', '新車同様'); INSERT INTO car_table (maker, country, type, color, comment) VALUES('ビーエム', 'ドイツ', '4ドア', '白', '車検切れ'); INSERT INTO car_table (maker, country, type, color, comment) VALUES('トヨタ', '日本', '4ドア', '赤', '新車'); INSERT INTO car_table (maker, country, type, color, comment) VALUES('日産', '日本', '4ドア', '白', '良好'); INSERT INTO car_table (maker, country, type, color, comment) VALUES('三菱', '日本', '2ドア', '黒', 'スタッドレス付き'); INSERT INTO car_table (maker, country, type, color, comment) VALUES('ホンダ', '日本', 'バイク', '赤', '新車同様'); INSERT INTO car_table (maker, country, type, color, comment) VALUES('ジャガー', 'イギリス', '4ドア', '白', '良好'); 試しに文字コードを確認する方法試してみました。 mysql> select hex(color) from car_table; +------------+ | hex(color) | +------------+ | E9BB92 | | E799BD | | E8B5A4 | | E799BD | | E9BB92 | | E8B5A4 | | E799BD | +------------+ 7 rows in set (0.00 sec) こんな感じで表示されたのですがなにかわかりますでしょうか?