PHP の fgetcsv で日本語が正しく取得できない場合

fgetcsv でデータを取ろうとしても、環境によって日本語が正しく取得できないことがあった。

ローカルの開発環境だとちゃんと取れるのに本番サーバにアップすると変になる。

全然取れないのならまだわかるんだけど、ちゃんと取れることもあれば空っぽになることもあるという状態。

どうやらこれが原因だったらしく、

注意: この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合、 ファイル中の 1 バイトエンコーディングは間違って読み込まれます。

PHP: fgetcsv – Manual

ロケールを設定したらうまくいった。

setlocale(LC_ALL,'ja_JP.UTF-8');