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
相応の理由がない限り、MySQL、PHP、などすべてUTF-8で統合して作成するほうがいい。
FreeBSDで ports を使ってインストールした状態では、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
で変更できる。