fgetcsvで文字が消える
2012/01/23 | PHPで遭遇した問題とその解決
fgetcsvはシフトJISで正しく動作しない、というのは前に確認したことがあった(頭の片隅に残っていた)。再度調べたらダブルクォーテーションで値が囲われていない場合にエラーが出るらしい(自分で確認すればいいのだが、そもそもシフトJISのまま使うことがないので確認しない)。これはエクセルからエクスポートした際に問題になる。
しかし、じゃぁUTF-8やEUC-JPで問題が発生しないか、というとやっぱり発生する。サーバのロケールの設定に依存するため、使用する言語とロケールが合致していない場合、やはりダブルクォーテーションで囲われていない値があれば文字の欠落が発生する。
使用する言語が決まっているのであれば問題ない。setlocale関数で指定してやればいいから。
使用する言語が決まっていない場合(どんな言語で与えられるかわからない場合)、fgetcsvは使えない、という結論だ。
あー、やだやだ。