支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • MySQLの文字化けを避ける方法

はじめに

MySQLを利用してWebサイトなどを構築する場合、大変困ってしまうことの一つが文字化けだと思います。せっかくデータベースにデータを入れたのに文字化けしてしまえば、様々な不具合のもとになってしまいます。意味不明なデータがページに表示されてしまえば炎上などのリスクになる可能性もあります。 文字コードの設定によって解決することなので、本記事ではその点について解説していきたいと思います。 本記事は、以下のような構成でお送りします。

はじめに
1.MySQLとは
2.文字コードの確認
3.文字コードを変換する方法
4.変更結果の確認
おわりに

1.MySQLとは

MySQLは、SQLで動いているデータベースです。MySQLはオープンソースで基本的に無料です。LinuxやWindows、Mac OS Xなど、複数のOSで利用可能です。巨大なサイトでも利用可能な頑丈さを誇っております。サン・マイクロシステムズにより買収されましたが、オラクルが開発しました。

2.文字コードの確認

はじめに、でも触れましたが、文字化けは文字コードのズレにより起こります。データベースに設定されている文字コードを確認するには、コマンドを使用する必要があります。 「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」です。

3.文字コードを変換する方法

文字コードを変更するためには、オプションファイル(構成ファイル)に指定をしなければなりません。オプションファイルというのは、プログラムの起動を行った際に、自動で読み取られる、起動時のオプションをまとめたファイルのことです。オプションファイルは、それぞれのOSによって異なります。Windowsの場合は、「my.ini」に、Linuxの場合は「etc/my.cnf」に保存されています。 オプションファイルは隠しファイルになっている「C:\ProgramData」に配置されていることが多いです。そのため、見つからない場合は、隠しファイルを表示させる必要があります。

それでは、文字コードの設定を記述していきましょう。
my.iniもしくはmy.cnfを開いてください。
[mysqld][client][mysql]の中、それぞれにある「default-character-set」の文字コードを変更します。もし行がない場合は、追記を行います。
サーバ側の文字コードを設定したい場合には、[mysqld]の項目を修正、もしくは追記します。「default-character-set=文字コード」のように記述してください。
クライアント側の文字コードを設定したい場合には[client]の項目を修正、もしくは追記します。「default-character-set=文字コード」のように記述してください。
コマンドクライアント側の文字コードを設定したい場合には、[mysql]の項目を修正、もしくは追記します。「default-character-set=文字コード」のように記述してください。
Linuxで文字化けを起こしている場合には「utf8」に変更するとよいでしょう。

4.変更結果の確認

記述を変更した場合には、MySQL Serverを再起動する必要があります。変更した後、先程の「show variables like "chara%";」を実行し、文字コードを確認すると、設定が変更されているはずです。

おわりに

本記事では、MySQLの文字化け回避方法について解説しました。 オプションファイルを設定し直すことで、文字化けを回避することができます。 これでデータベースを扱う際の心配事が一つ減っていると幸いです。