phpでfopenした時の文字コードの履歴
そんで真っ先に思いつくのが、読み込むCSVファイルのエンコーディングを事前に合わせておくことなんだけど、ものすごく無駄な感が否めないので、どうせなら読みながら変換できねーのかよ、というところで上記の話に繋がる訳だ。
fgetcsv()の中身はどうしようもないので、ファイルハンドルにiconvのストリームフィルタをかましてから渡してやればfgetcsv()が読み出す頃には既に任意の(というかロケールに合わせた)エンコーディングで読み出されて万事解決、と。
php のマニュアルの最後に "この関数はロケール設定を考慮します。" と書いてあったのを見落とし、ストリームフィルタを使うことになってしまった…
と思って確認したら、サーバーにSJISのロケール入ってないから結局ストリームフィルター使うのか。
みんなどうやって文字コード変換してるんだろうorz