Windows環境でUTF-8のデータを表示する
MySQLのDBはRailsでのお奨め通り、UTF-8に設定してあります。そうすると、Ubuntuで作業する分にはなんら問題はないのですが、Windowsの PowerShellや CMDでMySQLクライアントを立ち上げてちょっとSelectの結果を見ようと思うと日本語が化け化けになってしまうのです。
試行錯誤
- まず、「C:\> MySQL -u root -ppassword -e 'SELECT * FROM items 2555_development > out.txt」とかやってみました。これでできるのであれば別に画面でみれなくてもいいし。
結果、化け化けでした。
データベース接続で MySQLを選択するとエラーで落ちました。ODBC接続だとうまくいくみたいですが、ODBCドライバのところに MySQLがありません。あと、MySQL3までしか対応していないそうなので、わざわざODBCドライバ入れたり、LIBを持ってくる気が失せました。
- いまのところの正解は↓
やり方
まず現在の character_setを確認します。
mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | 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 | +--------------------------+--------+ 7 rows in set (0.00 sec)
次に表示だけ cp932(Shift-JIS)にします。
mysql> set character_set_results = cp932; Query OK, 0 rows affected (0.00 sec)
確認します。
mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+--------+ 7 rows in set (0.00 sec)
これで見るときだけ化けなくなりました。