環境
- Windows10
- XAMPP
対処法
文字コードの設定を行い、クライアント側に関係する項目をコマンドプロンプトのデフォルト文字コードに変更する。
詳細
Windows10でコマンドプロンプトからMySQL(MariaDB)を操作すると、INSERTなどで日本語を使用した場合に文字化けしてしまいます。chcpコマンドでコマンドプロンプトが使用する文字コードをUTF-8に変更できますが、変更した環境で日本語フォントが選択できないため結局文字化けしてしまいます。
ですので文字コードの設定を行い、クライアント側に関係する項目をコマンドプロンプトのデフォルト文字コード(cp932)に変更しましょう。
現在の設定を確認
まず現在の文字コードの設定を確認します。MySQLサーバを起動し、コマンドプロンプトからMySQLに接続して以下のコマンドを実行してください。
show variables like "chara%";
そうすると次のように表示されると思います。
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | D:\XAMPP\mysql\share\charsets\ |
+--------------------------+--------------------------------+
この内、
-
character_set_client
(クライアントからSQL文などが送信される時に使用される文字コード) -
character_set_connection
(クライアントから受け取った文字を変換する文字コード) -
character_set_results
(クライアントへ結果を送信する時に使用される文字コード)
の3つをcp932に変更します。
設定の変更
次にmy.iniファイルを開いてください。XAMPPの場合、XAMPPのコントロールパネルにconfigボタンがあるのでそこからmy.iniファイルを開けます。(不安な場合は中を変更する前にバックアップファイルを作っておきましょう。)
開いたら、[client]の欄に
default-character-set=utf8mb4
を追記し、
[mysql]の欄のdefault-character-set=utf8mb4を
default-character-set=cp932
に変更して保存してください。
ここまで終わったらMySQLサーバを再起動して下さい。
変更の確認
最後に変更できているか確認します。MySQLサーバを起動し、コマンドプロンプトからMySQLに接続して以下のコマンドを実行してください。
show variables like "chara%";
以下のように表示されていれば成功です。
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | cp932 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | D:\XAMPP\mysql\share\charsets\ |
+--------------------------+--------------------------------+
もしこれでも文字化けが直らない場合は、設定は今のまま、テーブルの作り直しや既存テーブルの文字コード変換を試してみてください。
参考