INFINITY -数学とかプログラミングとか-

統計とプログラムを使って役に立たせたい

TeX用コマンド入力を支援するための辞書をご利用ください。
sanctuary's blogは,適当なことが書いてあります。

phpmyadminで日本語入力すると文字化けする件

Warning: #1366 Incorrect string value: '\xE7\x94\xB0\xE4\xBB\xA3' for column 'name' at row 1

MySQL 接続の照合順序をutf8_general_ciにする。


my.cnfとやらを変更するらしいが、どこにあるのかわからない。

短縮ダイヤルでmyとだけ書かれているものすらも見つからない。

my.iniではないのか?

[mysqld]の部分を

default-character-set=ujis
skip-character-set-client-handshake

として、 cmdで、select * from tbcontact;としてみても、変更されてない。

mysqlを再起動すればいい。

すると、

mysql> show variables like "char%";

                                                                                                                        • +
Variable_name Value
                                                                                                                        • +
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir C:\xampp\mysql\share\charsets\
                                                                                                                        • +

8 rows in set (0.00 sec)

こうなる。


character_set_databaseの設定が必要だ。

MySQLが実際に使っている設定ファイルは、「コントロールパネル」の「管理ツール」で、「サービス」を確認します。
MySQLのサービスを選択して右クリック、プロパティを参照してみてください。


ないじゃないか。。


xampp control panelのapachemysqlの左側の「svc」のチェックがついていないことが原因らしい。


もう一度、mysqlを立ち上げたら、character_set_database が utf8になった(たぶん)

mysql


mysql> CREATE DATABASE dbgrapeg01

mysql> use dbgrapeg01;
Database changed
mysql> create table tbcontact(
-> id int primary key not null auto_increment,
-> name varchar(30),
-> email varchar(50),
-> content varchar(1),
-> text varchar(10000),
-> time datetime,
-> index keytime (time)
-> )engine=MyISAM;
Query OK, 0 rows affected (0.06 sec)

mysql> show tables;

                                              • +
Tables_in_dbgrapeg01
                                              • +
tbcontact
                                              • +

1 row in set (0.00 sec)

ここで、作ったフォームからphpに渡して、mysqlに追加。

すると、以下のようになる。


mysql> select * from tbcontact;

                                                                                                                                                                                                • +
id name email content text

| time |

                                                                                                                                                                                                • +
1 縺ゅ≠縺ゅ≠縺ゅ≠ aaaa@yasda 2 aaaaaaaa

縺ゅ≠縺ゅ≠縺ゅ≠縺ゅ≠縺・| NULL |

                                                                                                                                                                                                • +

1 row in set (0.00 sec)

。。。。だめだね。

わからん。

しかし、phpmyadminで見たら、ちゃんと日本語で見えた。なんなんでしょう?

mysqlの設定がおかしいのか?



phpmyadminを操作するのが、普通のようだから、これでもよさそうだが、なんか腑に落ちない。