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です。
合わせて読みたい → http://kennyqi.com/archives/334.html http://d.hatena.ne.jp/nightmare_tim/20110530/1306704112
返信削除MySQL 5.5 から mysqld の設定項目名が変わったそうです.