PHP MySQL 文字化け
昨日は、久々に文字化けではまってしまった。
あるデータをDBにぶち込むためのPHPスクリプトだったんだけど、なぜか登録されたデータが全て文字化け。
元のファイルはSJISで、DBはUTF-8。
いつもどおりの変換処理をしていつもどおりのDB処理をしてるのに、なぜか文字化け。
取り出し方がおかしいのかと見てみてもそれでも問題なし。
らちがあかないので、腰をすえて見て見る事に。
まず、インプットファイル。どこをどう見ても、普通のWindows製のSJISのCSVファイル。
でも、何がおきてるかわからないので、秀丸を使ってファイル段階でUTF-8に変換。
駄目。
じゃあ、DBにぶち込む際になにか変なことしてないかと思い、SQL発行直前の文字列をダンプしても、これは全然化けていない。
ということは、やっぱり取り出しがおかしいのかなと思い、取り出し直後の文字列 をダンプすると、既に化けている。回復不能。化けてるのに、mb_detect_encodingってやると「UTF-8」だそうな。
ためしに、phpMyAdminから直接テーブルにデータを幾つか入力して出力してみると、きれいに文字化けせずに出てくる。
自力で解決できないので、Google。
なんだか、MySQL5はよく文字化けするらしい?MTで?
まぁ、だからといってMySQL4にしたくもなかったので、とりあえず5の最新版をダウンロードしてきて、MySQLを再インストール。
やっぱり、駄目。
ということは、DBアクセスに使っている、PEAR::MDB2の問題しかないな!と適当に結論づけて、昨日は終了。
・・・
で、家に帰って色々考えてみたけど、MDB2がおかしかったら、他の アプリもおかしいはずなのに、なんで今回だけなんだろう???
・・・
・・・
・・・
!!!
もしかして、コマンドラインからスクリプト走らせているから?マジで?
・・・
ということで、今朝ブラウザからスクリプト起動したら、あら不思議、
文字化けしやがらねーの。
これって、常識なんでしょうか?
これからちょっと調べてみたいと思います。
Leave a Reply