1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Windows10]コマンドプロンプト→MySQLで日本語が文字化けする場合の対処

Posted at

環境

  • 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\ |
+--------------------------+--------------------------------+

もしこれでも文字化けが直らない場合は、設定は今のまま、テーブルの作り直しや既存テーブルの文字コード変換を試してみてください。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?