とりあえず接続したら「set names binary」を実行しておけばいいんじゃないのとか思うけど……

とりあえず接続したら「set names binary」を実行しておけばいいんじゃないのとか思うけど……

 「utf8に設定したテーブルが文字化けするようになったんで原因分かる?」とか言われて「どーせset names binaryすりゃ解決するだろ」と思ったけど、調べてみたら確かに変な風に文字化けしてる。

 詳しく調べてみたら、アプリケーション中ではutf8でやりとりしているつもりなのに

クライアント→サーバ時に、latin1→utf8の変換
サーバ→クライアント時に、utf8→latin1の変換

が行なわれていたことが発覚。

 今まで気付かなかったのは上記の変換が暗黙のうちに行なわれていたから。それが今回、別のクライアントから接続するときのdefault-character-setがlatin1以外だったので文字化けするようになったんですな。

 今回はたまたま気付いたけど、上記のようにたまたまちゃんと動いているように見えるだけでおかしなことになってるモノって結構あるのかもね*1。。。

*1:このせいでLIKE等でマッチしないケースがあるっぽいので気をつけましょう。