2010年2月19日金曜日

MySQLの文字化け対策

■DB作成時に文字コード指定
http://www.avant-tokyo.com/linux/mysql_character_set.html
create database XXXDB default character set sjis;

■データインポート時に文字コード指定
mysql -u ユーザ名 -p DB名 --default-character-set=sjis < インポートファイル

■DBIで接続しようとするとエラー
・Client does not support authentication protocol エラーhttp://dev.mysql.com/doc/refman/4.1/ja/old-client.html
UPDATE user SET Password = OLD_PASSWORD('mypass')
WHERE Host = 'some_host' AND User = 'some_user';FLUSH PRIVILEGES;

■PerlからDBIモジュールでmysqlに接続する際に文字化けが起きる
DB接続後、DBハンドルのdoメソッドで文字コードを指定するとうまくいくことがある
$db_conn->do("SET NAMES sjis");