前回記事:MySQLで新規にデータベースを作成・削除する方法では、MySQL Command Line Clientを使用し、データベースを作成&削除する方法をご紹介しました。今回は、MySQLの日本語項目が文字化けする場合の対策方法についてご紹介したいと思います。
目次
1.1 文字コードを確認するコマンド
1.2 コマンド実行結果の読み方と変更対象
2.1 オプションファイルを修正する
2.2 オプションファイル(my.ini)の場所
2.3 オプションファイルが見つからない場合
2.4 文字コードの設定を記述する
2.5 設定可能な文字コード一覧
1.文字コードを確認する方法
1.1 文字コードを確認するコマンド
データベースに設定されている文字コードを確認するには、次のコマンドを使用します。
show variables like "chara%";
これら文字コードの設定がどの部分に影響するかは、次の通りです。
character_set_client | クライアントから送信する際の文字コード |
---|---|
character_set_connection | クライアントから送信した文字コードの変換先 |
character_set_database | データベースの文字コード |
character_set_filesystem | ファイルシステムの文字コード |
character_set_results | クライアントへの結果送信に使用する文字コード |
character_set_server | サーバの文字コード |
character_set_system | システムで使用する文字コード |
character_sets_dir | 文字コード設定が保存されているフォルダの場所 |
上記8つの項目のうち次の6つが、クライアント側とサーバ側それぞれの文字コードの変更対象になります。
<クライアント側の設定>
・character_set_client
・character_set_connection
・character_set_results
<サーバ側の設定>
・character_set_database
・character_set_server
・character_set_system
2.文字コードを変更する方法
2.1 オプションファイルを修正する
文字コードの変更を行うには、オプションファイル(構成ファイル)に指定を加える必要があります。オプションファイルとは、プログラムの起動時に自動で読み取られる起動オプションをまとめたファイルのことです。
オプションファイルはOSによって異なり、それぞれ以下の場所に保存されています。
Windowsの場合・・・「my.ini」
Linuxの場合・・・「etc/my.cnf」
2.2 オプションファイルの設置場所
MySQL Server5.7をWindows版インストーラを用いてインストールした場合、デフォルトのままであればオプションファイルは次の場所に保存されています。
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
2.3 オプションファイルが見つからない場合
「C:\ProgramData」は隠しファイルになっています。見当たらない場合は隠しファイルを表示させてみて下さい。
それでも見つからない場合は、「サービス一覧>MySQL」を右クリックし、プロパティを表示して下さい。「実行ファイルのパス」の部分に、my.iniファイルの場所が記述されています。
なおインストーラ版(msi)ではなくzip版を用いてインストールを行った場合は、デフォルトでは存在しません。自分でmy.iniを作成する必要があります。
2.4 文字コードの設定を記述する
my.ini(またはmy.cnf)を開いて、[mysqld][client][mysql]それぞれにある「default-character-set」の文字コードを変更、もしくは、行がない場合は追記を行います。
サーバ側の文字コードを設定するには、次の項目を修正・追記します。
[mysqld]
(中略)
default-character-set=文字コード
クライアント側の文字コードを設定するには、次の項目を修正・追記します。
[client]
(中略)
default-character-set=文字コード
コマンドラインクライアントの文字コードを設定するには、次の項目を修正・追記します。
[mysql]
(中略)
default-character-set=文字コード
特にWindowsからコマンドプロンプトなどで接続する場合、この行にcp932(SJIS for Windows Japanese)を設定すると、文字化けが解消する場合があります。
「default-character-set」の部分を「character_set_client」等とすると、細かい項目別に設定することができます。「default-character-set」の場合は、クライアントまたはサーバに関連する全項目に同じものを設定します。
2.5 設定可能な文字コード一覧
設定可能な文字コードの一覧は、次のコマンドで表示することができます。
show character set;
なお文字コードの一般的な名称と設定用の名称は異なりますので、注意して下さい。
設定用の名称は、表の「Charset」の項目の文字列を指定して下さい。
3.変更結果を確認する
3.1 MySQLを再起動する
設定を反映するためには、MySQL Serverの再起動が必要です。Windowsの場合、サービスの再起動などで反映されます。
変更した状態で文字コードを確認するコマンドを実行すると、次のようになります。
今回は[client]の文字コードをcp932に変更したので、クライアント側の設定3つが変更されました。
4.まとめ
今回はWindowsの場合を中心にご紹介しましたが、Linuxで文字化けを起こしている場合は「utf8」に変更してみて下さい。
次回はMySQLのテーブル設計時に指定できるデータ型ついてご紹介したいと思います。よければ合わせてご覧下さい。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら