-
MySQLの日本語文字化け回避!文字コードを確認&変更する方法
公開日:2017年01月31日 最終更新日:2019年09月27日
前回記事: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_system2.文字コードを変更する方法
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のテーブル設計時に指定できるデータ型ついてご紹介したいと思います。よければ合わせてご覧下さい。
おすすめ記事
-
MySQLでユーザを作成し、権限を設定する方法
MySQLでユーザを作成し、権限を設定する方法
前回記事:便利な公式ツールMySQL Workbenchの使い方と日本語化方法ではMySQL Workbenchの基本的な使い...
-
オラクルマスターとはどんな資格?難易度から受験料までまとめました
オラクルマスターとはどんな資格?難易度から受験料までまとめました
データベースに興味がありこれから勉強を始めたいけど、何からやればいいのか分からない…。そんな方へ、...
-
ピックアップ
正社員
【Linux】ITエンジニア|データベースインフラの構築・運用・改善業務
年収 :450万円〜650万円
・プロトグループにて運営している、大規模WEBサービスのデータベースインフラの構築、運用、改善業務。...
株式会社プロトソリューション
正社員
【Oracle】データベースエンジニア|企業様向けのデータベースの構築
年収 :350万円〜650万円
■業務内容■ 企業様向けのデータベース関連業務: データベース診断、コンサル、設計、構築、移行、性...
株式会社 システムエグゼ
正社員
【MySQL】データエンジニア|クデータ関連システムの品質改善
年収 :600万円〜1200万円
【仕事内容】 データ活用の強化のために新たに発足するデータマネジメントポジションを、関係チームと...
株式会社エウレカ
正社員
【SQL】データベースエンジニア|ERP・SCM・CRMパッケージの開発
年収 :300万円〜800万円
・データベース・システム開発 ・データベース設計、SQLプログラム開発、ミドルウェア開発、ERP...
株式会社テクノプロ(テクノプロ・エンジニアリング社)