日本語を扱うにはutf8にするべきでしょう。
アプリケーション側で接続する際に文字コードを指定することもできます。
string constr = "userid=root;password=pass;database=test;Host=localhostCharset='utf8'; MySqlConnection con = new MySqlConnection(constr); conn.Open();
しかし複数アプリからの接続がある場合は、それぞれで指定しなくてはいけません。
やはりサーバー側で文字コードの設定をしたいものです。
まずは現状の文字コードを確認します。
show global variables like '%character%' 'character_set_client', 'latin1' 'character_set_connection', 'latin1' 'character_set_database', 'latin1' 'character_set_filesystem', 'binary' 'character_set_results', 'latin1' 'character_set_server', 'latin1' 'character_set_system', 'utf8' 'character_sets_dir', '/usr/share/mysql/charsets/'
次にmy.cnfにサーバー側の文字コードを設定して、MySQLを再起動します。
# vim /usr/my.cnf [mysqld] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8
すると再起動時にエラーが発生しました・・・
[root@centos100 mysql]# service mysql start Starting MySQL...The server quit without updating PID file [失敗]lib/mysql/centos100.pid).
どうやらMySQLのバージョンが上がって、
default-character-setからcharacter-set-serverに変更されたようです。
character-set-serverで設定しなおすと、MySQLも無事再起動しました。
# vim /usr/my.cnf [mysqld] character-set-server=utf8 [mysql] character-set-server=utf8 [mysqldump] character-set-server=utf8 [root@centos100 mysql]# service mysql start Starting MySQL....... [ OK ]
設定を確認するとutf8になっていることがわかります。
これでアプリ側で文字コードを指定しなくても日本語の登録が可能になります。
show global variables like '%character%' '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', '/usr/share/mysql/charsets/'