[MySQL]mysqlコマンドで、日本語の出力が文字化けするときに行う事

まずは、show variablesコマンドで、SQLの結果出力を行う文字コードが何になっているか確認する。
下記の場合だとcharacter_set_resultsがlatin1になってしまっている。

> mysql -h localhost -u root -ppass SampleDB
 
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)




DBの設定を変更可能な場合は、変えてしまえばよいが、変えたくない(or 変えられない)場合は、setコマンドで現在のセッションだけ変更することができる。下記の例では3つとも変更しているが、出力結果を変えたいだけなら、character_set_resultsだけ変更すればよい。

mysql> set character_set_results='utf8';
Query OK, 0 rows affected (2.27 sec)
 
mysql> set character_set_client='utf8';
Query OK, 0 rows affected (2.27 sec)
 
mysql> set character_set_connection='utf8';
Query OK, 0 rows affected (2.27 sec)




変更できたかは、再度show variablesを実行すれば確認できる。

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| 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       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+



この後、再度SQLを実行すれば、期待した文字コードで出力できるはず。

関連記事

コメントを残す

メールアドレスが公開されることはありません。