な、直った(つーか、文字化けしなくなった。)

ありがとう!ググる先生!ありがとう!先人達!

SQL内で文字化けしてしまう事について調べてたどり着いたのが id:inamenai さんの旧ブログ「inasphere blog」でした。
で、MySQLの文字化け対策を読んでみた。

PHPMySQLともにUTF-8で構成しているのに、DBとのデータ受け渡しで文字化けが起こる(おそらく他の文字コードでも同様)。

そうそう、そうなんですよ。が、当方の能力不足で理解出来なかったので、リンクされてた記事「ヽ( ・∀・)ノくまくまー」さんちの「文字化け問題を本気で直す」へ・・・。

すると、

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/mysql/charset...

ありゃ、latin1が紛れ込んでおる。どうやらこのラテンどもが文字化けの原因らしい。きっとラテン気質でいいかげんな仕事をしておるに違いない!(←差別だ!)で、my.cnfってファイルを探し出して設定を書き直せばいいのね。

って、my.cnfってどこ?どこにあるの〜???

探しまわったあげくに、くまくまーさんとこで

/etc/my.cnf

って書いてあるのに気が付いたですよ。orz

あった!
で、my.cnfを開いて、MySQLの設定が書かれている所を探す。おぅ、ここか。

# The MySQL server
[mysqld]
port = 3306
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
tmpdir = /Applications/XAMPP/xamppfiles/temp/

では、設定の最初に2行追加。

# The MySQL server
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
port = 3306
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
tmpdir = /Applications/XAMPP/xamppfiles/temp/

で、SQLを再起動しないといけないらしいので、XAMPPごと「+Q」で、終了。&起動。

さっそく試してみよう。

できてる〜。やったね。これでスッキリ!明日から本気出す!