MySQL 文字化け対策 2

[MySQL] MySQL 文字化け対策
http://d.hatena.ne.jp/medusajap/20071219/1198032569

こっちが不十分だったので、重要なポイントの付け足し。


注意!)my.cnfに

[mysqld]
default-character-set=sjis

を追加後、再起動させても「character_set_connection」「character_set_database」の設定が反映されない場合の対処方法です。*1


my.cnfの[mysqld]にある

character-set-server = latin1
collation-server = latin1_general_ci

を削除し、新たに下の二行を追加。

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

以上で終了。


my.iniへの設定は一切必要ないです。
「character_set_system」「character_set_filesystem」以外のキャラクタがセットされるはず。

mysql> SHOW VARIABLES LIKE 'char%';

Variable_name Value

character_set_client sjis
character_set_connection sjis
character_set_database sjis
character_set_filesystem binary
character_set_results sjis
character_set_server sjis
character_set_system utf8
character_sets_dir C:\xampp\mysql\share\charsets\

どうやら「default-character-set」の初期化対象が「character-set-server」らしく、
「character-set-server」でセットすると「default-character-set」の項目が無視されるみたい。
厳密には上書きされるためか。


「character_set_system」「character_set_filesystem」のValueに関しては、
systemがutf8とfilesystemがbinaryなんで、放っておいても問題ないかと。

*1:(環境:Win XP XAMPP)