まずは、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を実行すれば、期待した文字コードで出力できるはず。
関連記事
コメントを残す