前提
- XAMPPのバージョン 5.6.15
- 使用PC MAC
- ローカル環境のみ検証
XAMPPにはいろいろバージョン毎に改善(変更)があるので、中身が大きく変わることがまれにあります。今回は特にMySQLから、MariaDBにRDBMSが変更になってます。ただ、MySQL派生(オープンソース)なのであまり気にするところも無いかと思います。
手順
すべてターミナルで動かします。
通常MySQLは次の階層にあるかと思います。
/Applications/XAMPP/xamppfiles/bin/mysql
現状のキャラクターセットを把握します。
1. ターミナルを起動(Spotlight or AlfredよりTerminalと打 普通にApplicationsフォルダから開いてもいい。)
2. XAMPPまで移動(一気にMySQL起動してもいいです。)
Terminal~$ cd /Applications/XAMPP/
ls で確認ファイル存在を確認してもいいかもしれません。
Terminal~$ cd /Applications/XAMPP/ ~$ ls bin cgi-bin etc htdocs logs manager-osx.app uninstall.app xamppfiles
3. MySQL起動(binの中に入ってます。指定してあげましょう)
Terminal・・・ //カレントディレクトリがXAMPP ~$ ./bin/mysql -u root -p
4. パスワード聞かれます。
TerminalEnter password: //ここに入力してエンター押してください。
5. このような表示になったらMySQL(MariaDB)に接続できました。
TerminalWelcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.1.9-MariaDB Source distribution Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> ;
6. 現状の設定を見てみましょう
TerminalMariaDB [(none)]> show variables like 'char%'; +--------------------------+------------------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /Applications/XAMPP/xamppfiles/share/charsets/ | +--------------------------+------------------------------------------------+
このようにValueがutf8でないlatin1となってるものをすべてutf8にしたいです。
これはmy.cnfに追加行してあげると治ります。
通常MySQLのmy.cnfの場所
/Applications/XAMPP/etc/my.cnf
1. Vimでcnfファイルをいじります。
Terminal//カレントディレクトリがXAMPP ~$ vim ./etc/my.cnf
エンターでVim画面に切り替わります。その中で、2箇所追記します。
[client]
にdefault-character-set=utf8
mysqld
にcharacter-set-server=utf8
をそれぞれ追記して保存しMySQLを再起動します。
Terminal//■ Vim操作方法 //■ インサート //「i」を押すと(インサートモードになります。)追記できる状態です。(Insert) //■ 保存 //「escキー」を押したあと(ノーマルモードになります。) //「:」を押すと(コマンドモード)コマンドモードになるので、 //上書き「qw」とうちエンターを押すと上書き保存サれています。
Terminal# The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock //ここ↓ default-character-set=utf8 //ここ↑ # Here follows entries for some specific programs # The MySQL server [mysqld] user = mysql port=3306 socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock skip-external-locking key_buffer = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M //ここ↓ character-set-server=utf8 //ここ↑
再起動します。
Terminal~$ ./xamppfiles/sbin/mysqld restart
再起動できない場合は、XAMPPコントロールマネージャーのGUIよりリスタートしてください。
再度MySQLに接続して、キャラクターセットをかくにんしてください。
TerminalMariaDB [(none)]> show variables like 'char%'; +--------------------------+------------------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /Applications/XAMPP/xamppfiles/share/charsets/ | +--------------------------+------------------------------------------------+ 8 rows in set (0.00 sec)
これで、PHPからMySQLの日本語データ等は文字化けせずに表示できるはずです。
以上です。