title: cmdで文字化けするとき(Xampp/MySql)
tags: MySQL cmd Windows xampp
author: RHsensei
slide: false
前提条件
MySqlのデータベースに接続でき、テーブルの作成等ができる。
###問題
MySqlのデータベースにcmdから操作をしている際に
日本語のみ文字化けしていることに気づきました。
#テーブル内容
+----+--------+----------------+---------+---------------------+
| id | number | title | book_id | created_at |
+----+--------+----------------+---------+---------------------+
| 1 | 1 | MySQL?ニ・ | 2 | 2021-02-10 15:17:19 |
| 2 | 2 | ?e?[?u???ニ・ | 2 | 2021-02-10 15:17:33 |
| 3 | 3 | CRUD?ニ・ | 2 | 2021-02-10 15:17:41 |
| 4 | 4 | RH?ニ・ | 2 | 2021-02-10 15:32:57 |
| 5 | 5 | RH?ニ・ | 2 | 2021-02-10 15:34:18 |
+----+--------+----------------+---------+---------------------+
##原因
発生原因が複数あり、切り分けが必要です。
文字コードが異なる場合に発生することが多く、以下の設定を確認しましょう。
① クライアント側(自分)、サーバー側(xammp上のMySqlサーバー)
② データベースの文字コード
##対応方法
文字コード変更の詳細は以下を参考にしてください。
Xamppの場合は、C:\xampp\mysql\binのmy.iniを変更します。
コマンドプロンプト自体の文字コードの変更
mysqlで文字コードをutf8にセットする
上記を試しても出来ない場合、
一時しのぎではありますが下記を参照して下さい。
今回の設定はcmdを閉じるとデフォルトの設定に戻ります。
まずはMySqlのデータベースにcmdから接続します。
以下のコマンドで、現在の文字コードを確認します。
SHOW VARIABLES LIKE 'char%';
#文字コード一覧
+--------------------------+----------------------------------------+
| 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 | R:\Install\xampp\mysql\share\charsets\ |
+--------------------------+----------------------------------------+
以下で文字コードを「ShiftJIS」に変更します。
SET NAMES cp932;
既存のデータは変更されないため、新たにデータを追加する。
(データベースに追加したときの文字コードが反映する)
データベースの内容を確認。
##日本語が表示された!!
----+--------+-------------+---------+---------------------+
| id | number | title | book_id | created_at |
----+--------+-------------+---------+---------------------+
| 1 | 1 | MySQL??? | 2 | 2021-02-10 15:17:19 |
| 2 | 2 | ?e?[?u????? | 2 | 2021-02-10 15:17:33 |
| 3 | 3 | CRUD??? | 2 | 2021-02-10 15:17:41 |
| 4 | 4 | RH??? | 2 | 2021-02-10 15:32:57 |
| 5 | 5 | RH??? | 2 | 2021-02-10 15:34:18 |
+| 6 | 6 | RHについて | 2 | 2021-02-10 15:46:45 | //文字コード変更後に追加
----+--------+-------------+---------+---------------------+
今回の設定はcmdを閉じるとデフォルトの設定に戻ります。