電子書籍の厳選無料作品が豊富!

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\ |
+--------------------------+----------------------------------------------+

A 回答 (4件)

特におかしいところは見当たりませんね。


同じようにDB、テーブルを作成し、phpMyAdminからデータを入れてみましたが、プロンプトから同様の手順で特に文字化けは見られませんでした。

となると、実データが無いのでこれ以上は解決策を見つけるのが難しいかなと思います。ですので、解決の参考になればと思うことを記載します。

・テーブルの中の実際に入っている値の文字コードがutr8か確認してみる。
select hex(CULUM_NAME) from car_table;
※文字コードがutf8か確認

・テーブルの中身をダンプして、エディタで確認し文字コードを調べる。

・コマンドプロンプトからDB、テーブルの作成でデータを入れて、phpMyAdminで見てみる。

他にもいろいろな方法があると思います。
力になれなくてすみません。

この回答への補足

何度も本当にありがとうございます。
訳もわからず悩んでいたので本当に感謝です!

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)

こんな感じで表示されたのですがなにかわかりますでしょうか?

補足日時:2008/07/16 02:08
    • good
    • 0
この回答へのお礼

原因がわからなかったので一度アンインストールし最新版の
1.6.7が出ていたのでそちらを入れて同じ設定をして試したところ
コマンドプロンプトでSET NAMES SJIS;を入れてやると日本語も
正常に表示されることが確認できました!
(SET NAMES SJIS;をいれないと文字化けしてます)

理由がわからないまま解決?してしまい複雑な感じですがおかげ様で
なんとか解決することができました。

以前にも原因がわからないトラブルがありその際も一度
アンインストールすることにより解決したので原因こそ謎なものの
なにかあるのでしょうね・・・w

お礼日時:2008/07/16 03:57

まだなおりませんか。

。。
念のため、下記の情報をいただけますか?

・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)

補足日時:2008/07/15 04:04
    • good
    • 0

先ほど回答したものです。



ちゃんとした回答になっていなかったみたいですね。
ごめんなさい。
コマンドプロンプト側からクライアントキャラクタをセットします。

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です。

補足日時:2008/07/14 17:29
    • good
    • 0

こんにちは。


mysqlコマンドとは、Windowsのコマンドプロンプトだと思いますが、
Windowsのコマンドプロンプトは、取り扱っている文字コードがSjisなので、
文字化けはしてしまいます。

この回答への補足

お返事ありがとうございます。
>mysqlコマンドとは、Windowsのコマンドプロンプトだと思いますが
コマンドプロンプトのことです。略して書いてしまいすみません。

>Windowsのコマンドプロンプトは、取り扱っている文字コードがSjisなので、
だからコマンドプロンプトだけ文字化けしてしまうのですね・・・
サイトはutf8なのでコマンドプロンプトで確認するときはsjisという
設定にするにはどこを変更すればいいのでしょうか?

補足日時:2008/07/14 14:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!