XAMPP（OS X　MAC　向け）v5.6.15のMySQL＆PHP文字化けについての簡単な備忘録

#前提
- XAMPPのバージョン　5.6.15
    - [XAMPP公式ページ](https://www.apachefriends.org/jp/index.html)
- 使用PC　MAC
- ローカル環境のみ検証

XAMPPにはいろいろバージョン毎に改善（変更）があるので、中身が大きく変わることがまれにあります。今回は特にMySQLから、MariaDBにRDBMSが変更になってます。ただ、MySQL派生（オープンソース）なのであまり気にするところも無いかと思います。

#手順
**すべてターミナルで動かします。**

> 通常MySQLは次の階層にあるかと思います。

> `/Applications/XAMPP/xamppfiles/bin/mysql`

> **現状のキャラクターセットを把握します。**

>> １. ターミナルを起動（Spotlight or AlfredよりTerminalと打 普通にApplicationsフォルダから開いてもいい。）

>> ２. XAMPPまで移動（一気にMySQL起動してもいいです。）

>> ```lang:Terminal
~$ cd /Applications/XAMPP/
```

>>>　ls で確認ファイル存在を確認してもいいかもしれません。

>>> ```lang:Terminal
~$ cd /Applications/XAMPP/
~$ ls
bin		cgi-bin		etc		htdocs		logs		manager-osx.app	uninstall.app	xamppfiles
```

>> ３. MySQL起動（binの中に入ってます。指定してあげましょう）

>> ```lang:Terminal
・・・
//カレントディレクトリがXAMPP
~$ ./bin/mysql -u root -p
```

>> ４. パスワード聞かれます。

>> ```lang:Terminal
Enter password: //ここに入力してエンター押してください。
```

>> ５. このような表示になったらMySQL（MariaDB）に接続できました。

>> ```lang:Terminal
Welcome 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)]> ;
```

>> ６. 現状の設定を見てみましょう

>> ```lang:Terminal
MariaDB [(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`

>> １. Vimでcnfファイルをいじります。

>> ```lang:Terminal
//カレントディレクトリがXAMPP
~$ vim ./etc/my.cnf
```

>> エンターでVim画面に切り替わります。その中で、２箇所追記します。

>> `[client]`に`default-character-set=utf8`

>> `mysqld`に`character-set-server=utf8`

>> をそれぞれ追記して保存しMySQLを再起動します。

>> ```lang:Terminal
//■　Vim操作方法
//■　インサート
//「i」を押すと（インサートモードになります。）追記できる状態です。（Insert）
//■　保存
//「escキー」を押したあと（ノーマルモードになります。）
//「：」を押すと（コマンドモード）コマンドモードになるので、
//上書き「qw」とうちエンターを押すと上書き保存サれています。
```

>> ```lang: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
//ここ↑
```

>> 再起動します。

>> ```lang:Terminal
~$ ./xamppfiles/sbin/mysqld restart
```

>> 再起動できない場合は、XAMPPコントロールマネージャーのGUIよりリスタートしてください。

>>再度MySQLに接続して、キャラクターセットをかくにんしてください。

>> ```lang:Terminal
MariaDB [(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の日本語データ等は文字化けせずに表示できるはずです。
以上です。