my.cnf が行方不明......。(XAMPP の MySQL での文字化け対処法)
正直、何ヶ月も前に対処したネタなので、うろ覚えなんですが、完全に忘れきってしまう前に、ちゃんとここに書いておこうと思います。
ローカルのテスト環境として導入した XAMPP の MySQL の内容が、なんだかやたらと文字化けすることが多かったので、色々と調べてみました。
とにかく下記のエントリが参考になりまくりました。
[MySQL] 文字化け問題を本気で直す - ヽ( ・∀・)ノくまくまー(2006-10-11)
まずは、上記エントリ通り、とりあえず現状の文字コード関連の設定を確認。
コマンドラインでやっても良いけど、phpMyAdmin の「MySQL のシステム変数」というメニューでも、同様の設定を確認することができるようです。
で、確認してみると案の定、
何も考えていないだけあって、"characterset" 関係が全て "latin1" になっている。
という状態。
で、これを何とかするには、設定ファイル /etc/my.cnf に、
[mysqld] default-character-set=utf8 skip-character-set-client-handshake
という記述を追加すれば良いとのこと。
ただ、今回 MySQL を使っているのは UNIX/Linux 系の OS ではなく Windows なので、当然 /etc なんていうディレクトリはありません。
といわけで、色々とめぼしいフォルダを探し回って、my.cnf はどこにあるんだ、と漁っていたんですが、それらしきファイルがさっぱり見つからず。
そんな感じで無駄に時間が経過して、かなりハマっちゃっていた時に見つけたのが、下記のエントリでした。
XAMPPのMySQLの設定ファイルは?
このエントリ、書いておいて下さって本当にありがとうございます。めちゃくちゃ助かりました。
と、同時に凄い脱力感が......。
......短縮ダイヤルって。
つまりは、結論から言うと、 my.cnf は XAMPP をインストールしたフォルダ内の mysql\bin フォルダ内にあります。
が、 .cnf という拡張子は Windows では「短縮ダイヤル」の拡張子で、これは Windows を新たにインストールした際に誰もがまずは行なうであろう「フォルダオプション」の「登録されている拡張子は表示しない」の設定をオフにする、という設定を行なっていても、何故かしっかり非表示になるタイプの拡張子だったのでした。
そのため、エクスプローラー上では「my.cnf」ではなく、単に妙なアイコンと一緒に「my」とだけ表示されていた、と。
そりゃ見落とすわ......。orz
こういう失敗をしないためにも、「フォルダオプション」の「ファイルの種類」で、.cnf の拡張子を、個別に「常に拡張子を表示する」設定オンにしておきました。
後は、my.cnf をテキストエディタで開いて、前述の設定を [mysqld] の欄に記述して完了。
再度、phpMyAdmin で「MySQL のシステム変数」を確認すると、"characterset" 関係の設定が "utf8" に代わっていました。
そして文字化け問題も解決。めでたしめでたし。
しっかし、ほんとに Windows の「極力拡張子は表示しない」という無意味な努力は邪魔以外の何者でもないですね......。