MySQLで文字化けを防ぐには以下の設定を統一しておく
・Database の文字コード
・テーブルの文字コード
・カラムの文字コード
・クライアントの文字コード
<DBの文字コード確認>
show variables like "chara%";
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 | utf8 |
character_set_system | utf8 |
character_sets_dir | /usr/share/mysql/charsets/ |
<DBの文字コード変換コマンド>
alter database appdb character set utf8;
<テーブルの文字コード確認>
show create table <テーブル名> \G;
CREATE TABLE `TABLE_NAME` (
`ID` char(8) CHARACTER SET latin1 NOT NULL COMMENT 'ID',
`REG_USR` varchar(6) CHARACTER SET latin1 NOT NULL COMMENT '登録者',
`REG_SYS_TIME` datetime NOT NULL COMMENT '登録日時(システム日時)',
`UPD_USR` varchar(6) CHARACTER SET latin1 NOT NULL COMMENT '更新者',
`UPD_TIME` datetime NOT NULL COMMENT '更新日時(システム日時)',
PRIMARY KEY (`ID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8
テーブルの文字コードとカラムの文字コードが異なる場合は
IDのようにカラムの定義内に「CHARACTER SET <文字コード>」が表示される
<テーブルの文字コードの変更>
ALTER TABLE <テーブル名> CHARSET=utf8;
MySQL データベースの文字コードを後から変換する
http://blog.livedoor.jp/kumagai_nori/archives/52255224.html
MySQLの文字コードにハマる
http://sugamasao.hatenablog.com/entry/20070906/1189102573