Going my way

いいなと思ったことをメモしていきます。

MySQLの文字化けがどうしても直らないときは、my.cnfだけいじってもダメだとわかった。


Advertisements


・my.cnfでいじっても文字化けが直らない。
・INSERTすると文字が化けて見える。
linux自体の文字コードもちゃんとutf-8にした。


どうしてもMySQLの文字化けが直らないから、念のため以下を実行してみた。
すると・・・

mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

下記のコマンドでこれもutf8に変更!
(参考)
http://d.hatena.ne.jp/webtrap/20090922/1253580851
http://ext.omo3.com/linux/mysql_character_set.html

SET character_set_database = 'utf8';

実行したときは変わったんだけど、再起動したらまたlatin1になってしまった。

これはテーブルを作り直すしか無いのかな・・・
(たぶんmy.cnfになんか書けばいいんだけど・・・)
テーブルにデフォルトの文字コードを設定する構文

CREATE TABLE table_name [DEFAULT] CHARACTER SET 'utf8';

これでテーブルを作った後にさらにダメ押しで

SET character_set_database = 'utf8';

で、実際にINSERTしたら、やっと文字化けしなくなった!