2013年1月27日日曜日

MySQLのUTF-8で文字化けにハマった

入院中のみけです。

MySQLのUTF-8で文字化けにハマったので、

その解決法をメモっときます。

データベースをUTF-8で作れば終わりではない


CREATE DATABASE HOGE DEFAULT CHARACTER SET utf8

とすればデータベースをUTF-8で作成することができます。


ただ、このままの状態で、

JDBCなどからMySQLにアクセスしてデータベースに文字列を登録して、

mysqlのコンソールから登録されたデータを確認すると、

文字化けを起こしています。


解決法はググれば出てきます


SREngine: Sein blog - 【MySQL】 文字化け解決法 (UTF-8)


必要な作業としては、

(僕はMac Portsでインストールしたので下記のパスになっています)

cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf

このようにmy.cnfファイルを準備した上で、

下記の設定を加えます。

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
default-storage-engine=innodb

そして、mysqldを再起動して、

使用するデータベースに接続後、

  • show variables like 'char%'
  • status

というコマンドで文字コードを確認します。

mysql> use hoge
Database changed
mysql> show variables like 'char%';
Variable_name Value
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 /opt/local/share/mysql5/mysql/charsets/
8 rows in set (0.00 sec) mysql> status;
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8

となっていればおkです。

1 件のコメント:

  1. 合わせて読みたい → http://kennyqi.com/archives/334.html http://d.hatena.ne.jp/nightmare_tim/20110530/1306704112

    MySQL 5.5 から mysqld の設定項目名が変わったそうです.

    返信削除