Windows環境でUTF-8のデータを表示する

MySQLのDBはRailsでのお奨め通り、UTF-8に設定してあります。そうすると、Ubuntuで作業する分にはなんら問題はないのですが、WindowsPowerShellや CMDでMySQLクライアントを立ち上げてちょっとSelectの結果を見ようと思うと日本語が化け化けになってしまうのです。

試行錯誤

  • まず、「C:\> MySQL -u root -ppassword -e 'SELECT * FROM items 2555_development > out.txt」とかやってみました。これでできるのであれば別に画面でみれなくてもいいし。

結果、化け化けでした。

  • 次は Oracle接続ではよく使っているCSEを試してみることに。

データベース接続で 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)

これで見るときだけ化けなくなりました。