昨日記事に書いた、Window用MySQLクライアント(MySQL Query BrowserやCSE)でクライアント側の文字コードを設定しても文字化けする、と言う問題ですが、単純に自分のボーンヘッドでした・・・
というもの、元々データベースへデータを挿入する時点で文字コードをミスっていました。ただ、 今回は例のlatin1でもUTF-8がそれなりに扱えてしまうlatin1マジックにはまってしまい、 文字コードの設定をデータ挿入時にミスっていることに気づきませんでした・・・
そうです、MySQL標準付属のクライアントでデータを確認して、「ちゃんとデータは言ってるじゃーん!」 とのたまっていたわけです(笑)。しかし、PHPからMySQLにアクセスしても文字化けすることが判明し、 ようやく大本の問題に気づくことができました。
で、ちゃんとデータ挿入時に実行されていなかったクエリ(プログラムのバグ・・・)
set names utf8
を実行するようにしたところ、Window用のMySQLクライアントでもちゃんと表示されるようになりました・・・
メデタシメデタシ・・・というかおそるべしlatin1マジック・・・。 latin1のテーブルにUTF-8を入れてもちゃんと入っているように見えるだけでなく、 UTF-8のテーブルにUTF-8をlatin1で入れてもちゃんと入っているように見えるのね・・・
よい教訓になりました。