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