cmdで文字化けするとき(Xampp/MySql)

---
title: cmdで文字化けするとき(Xampp/MySql)
tags: MySQL cmd Windows xampp
author: RHsensei
slide: false
---

前提条件
MySqlのデータベースに接続でき、テーブルの作成等ができる。

***
###問題
MySqlのデータベースにcmdから操作をしている際に
__日本語のみ文字化けしていることに気づきました。__

#テーブル内容
```sql
+----+--------+----------------+---------+---------------------+
| 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を変更します。__

__[コマンドプロンプト自体の文字コードの変更](https://qiita.com/shibuchaaaan/items/5c67ffdf1ae5e3a7c287)
[mysqlで文字コードをutf8にセットする](https://qiita.com/YusukeHigaki/items/2cab311d2a559a543e3a)__

***
__上記を試しても出来ない場合、
一時しのぎではありますが下記を参照して下さい。__
<font color="HotPink">今回の設定はcmdを閉じるとデフォルトの設定に戻ります。</font>

まずはMySqlのデータベースにcmdから接続します。

以下のコマンドで、現在の文字コードを確認します。

```sql
SHOW VARIABLES LIKE 'char%';
```
#文字コード一覧
```sql
+--------------------------+----------------------------------------+
| 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」に変更します。__

```php
SET NAMES cp932;
```
__既存のデータは変更されないため、新たにデータを追加する。
（データベースに追加したときの文字コードが反映する）__
データベースの内容を確認。
##日本語が表示された！！
```diff_sql
  ----+--------+-------------+---------+---------------------+
 | 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 | //文字コード変更後に追加
  ----+--------+-------------+---------+---------------------+
```

__参考資料__
[Windowsコマンドプロンプト　文字コード設定](https://qiita.com/user0/items/a9116acc7bd7b70ecfb0)

<font color="DeepPink">今回の設定はcmdを閉じるとデフォルトの設定に戻ります。</font>