MySQL CLI の日本語文字化けを SET character_set_results=utf8mb4; で解決する

Tadashi Shigeoka ·  Thu, September 5, 2019

MySQL CLI (CUI, REPL) で日本語が文字化けするときの解決方法をご紹介します。

MySQL

前提条件

MySQL 文字コード一覧

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

MySQL CLI の文字化け解決手順

日本語の文字化け

mysql> select name_ja from product where id = 1;
+---------+
| name_ja |
+---------+
| ??    |
+---------+
1 row in set (0.01 sec)

文字コード character_set_results=utf8mb4 にセット

MySQL 自体の文字コード設定を変更できない場合、以下のように一時的に CLI でのクエリ実行結果の文字コードを utf8mb4 に変更することができます。

mysql> SET character_set_results=utf8mb4;
Query OK, 0 rows affected (0.00 sec)

日本語の文字化け解決

mysql> select name_ja from product where id = 1;
+----------+
| name_ja  |
+----------+
| 商品 |
+----------+
1 row in set (0.01 sec)

以上、MySQL CLI で日本語の文字化けを文字コード utf8mb4 を設定して解決した、現場からお送りしました。