XAMPPでMySQLを使うと文字化け(特に日本語)が発生することがあります。
僕自身、その問題の解決方法が分からず悩んだことがありました。
そこでXAMPPでの文字化けの簡単な対処法についてまとめたいと思います。
このページの目次
XAMPP + MySQLでの文字化けの直し方
文字化けというのは色々な原因があるので直し方については一概に言えません。でも自分の環境だと次の手順を試したら文字化けが解消できました。
1.文字化けしているテーブルを消去・作り直し
まず文字化けしている対象のテーブルを削除しましょう。
やり方は phpMyAdmin から削除するなら次の手順です。
- テーブルのあるDBを開く
- 対象のテーブルを見つける
- 「削除」をクリック
これで消えるので再度作り直してください。
もちろんMySQLから次のSQL文を実行でもOKです。(テーブル名が test の場合)
1 |
DROP TABLE test |
まあ削除リンクをクリックした方が速いですけどね・・・
なぜこの削除操作が必要かというと、文字化けを直しても既に文字化けしているレコードまでは元に戻せないからです。なのでいったん再作成が必要になります。
2.php.iniを開いて文字コード設定変更
お次にやることは php.ini からサーバーの文字コードを変更すること
php.ini はその名の通りPHP全体の設定を変更するファイルで、XAMPPコントロールパネルからなら「Apache」ー>「Config」をクリックしてその中から開けます。
あるいはWindows環境なら C:\xampp\php\php.ini から直接開いても可です。
では php.ini で次のUTF-8の記述がある部分を見つけてください。エディタなどの検索機能から「UTF 8 Settings」で検索するとすぐ見つかります。
1 2 3 4 5 6 |
## UTF 8 Settings #init-connect=\'SET NAMES utf8\' #collation_server=utf8_unicode_ci #character_set_server=utf8 #skip-character-set-client-handshake #character_sets-dir="C:/xampp/mysql/share/charsets" |
多分上みたいに全部 # でコメントアウトされてるはずです。
サーバーの文字コードをUTF-8に統一する場合、 character_set_server=utf8 のコメントアウトを外せばOK。つまり次のように変更すればいいってことです。
1 2 3 4 5 6 |
## UTF 8 Settings #init-connect=\'SET NAMES utf8\' #collation_server=utf8_unicode_ci character_set_server=utf8 #skip-character-set-client-handshake #character_sets-dir="C:/xampp/mysql/share/charsets" |
コメントアウトを外すのは4行目だけでよく、それ以外は変更しなくても問題ないみたいです。(少なくとも自分の環境では・・・)
3.XAMPPのMySQLを再起動する
ここまでできたらXAMPPコンソールパネルから「MySQL」を再起動します。
▼「MySQL」から stopボタン を押して再度 startボタン を押せばおk
これでテーブルに日本語が含まれるレコードを挿入しても文字化けしなくなったはずです。
もし上の方法を試しても文字化けが直らないなら・・・
上で紹介した方法は僕の環境での直し方なので、特定の環境だとまだ文字化けが起こるかもしれません。
なのでそういう時はデータベースの照合順序も確認した方がいいです。
照合順序っていうのは文字の大小関係を比較するときの基準で、これがデフォルトのもの以外になっていると文字化けする可能性があるみたいです。
ちなみにMySQLで日本語を扱う時に使用できる照合順序は次の3つ
- utf8_bin
- utf8_general_ci
- utf8_unicode_ci
照合順序がこれ以外になっているなら、上3つのどれかに変更すると文字化けが直るかもしれません。ちなみに phpMyAdminのデフォルト設定は utf8_general_ci になっているので下手に変更する必要はないですね。
ちなみに僕自身はMySQLについてはそれほど詳しくありません。
なのでもし何をしても文字化けが直らないなら teratail(テラテイル) などで質問することをおススメします。あっちの方が分かりやすい回答が貰えるので
まあサーバーの文字コードをUTF-8にしておけば文字化けはまず起こらないはずです。
ここまでのまとめ
簡単にここで紹介した文字化け解決法をまとめると次の通り
- まず文字化け対象のテーブル削除
- サーバーの文字コードをUTF-8に設定
- XAMPPのMySQLだけ再起動
多分ほとんどのケースは上の手順で治ると思います。もし困った場合はこの方法をお試しあれ
以上、XAMPPのMySQLで文字化けが発生するときの解決策についてでした。
XAMPP関連ならコチラの記事も役立つかも
ここで紹介した文字化け以外にもXAMPPでは色々な問題に遭遇することが多いです。
なので、そういうエラーとかトラブルの対処法は次記事でも色々書いています。
問題解決の助けくらいにはなるかもなので、同じトラブルに遭遇した場合はご覧ください。
また、「本当に検索だけじゃ解決できない」「お手上げ状態」
・・・となってしまった時は テラテイル(teratail) や Stack Overflow などで質問することも重要です。
こういう質問サイトは専門知識のある方は答えてくれるので、切羽詰まった時は活用していきたいですね。エンジニアとかプログラマーの心強い味方です。
ちなみに、そういう エンジニア向け質問サイト一覧 は次記事でまとめた通り
当然ながら1つの質問サイトに絞るよりも複数併用すると答えが返ってきやすいです。使い分ければ時間を浪費しなくて済むようになります。