読者です 読者をやめる 読者になる 読者になる

MySQLの文字化け対応

skip-character-set-client-handshake や SET NAMES を使うべきではない。
参考:http://goungoun.dip.jp/app/fswiki/wiki.cgi/debianetch?page=2007%2F04%2F23-01%A1%A2skip-character-set-client-handshake+%A4%CB%A4%C4%A4%A4%A4%C6

相応の理由がない限り、MySQLPHP、などすべてUTF-8で統合して作成するほうがいい。

FreeBSDports を使ってインストールした状態では、my.cnf がないので、/usr/local/share/mysql 以下にあるサンプルを /usr/local/etc/ 以下に移動させる。

サンプルには
my-small.cnf
my-medium.cnf
my-large.cnf
といくつか種類があるが、スタンドアローンの環境であれば、my-medium.cnf を使用するので問題は無いと思う。

my-medium.cnf を /usr/local/etc 以下に my.cnf としてコピーする。

データベースへ移動して、

show variables like '%char%';

とすることで、データベースに使用されている文字コードを見ることができる。

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 latin1
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
                                                                                                                            • +

8 rows in set (0.00 sec)


[mysqld] 以下に
default-character-set = utf8

[mysql] 以下に
default-character-set = utf8

を追加することで、

で表示される、
character_set_server | latin1
が、utf8 に変更される。

character_set_database | latin1

を変更するには
mysql> alter database character set utf8;
で変更できる。