"能","<p>
あ</p>",""
上記のような3列で1行のSJISのCSVがあった場合、 SJISのロケール追加して、
$ locale -a | grep -i ja
ja_JP
ja_JP.SJIS
ja_JP.eucjp
ja_JP.sjis
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
japanese.sjis
という環境であっても、
setlocale(LC_ALL, 'ja_JP.SJIS');
をした後に、fgetcsv() を利用して正常にCSVが取り込むことができない。
別の方法もあった気がしたけど、忘れてしまったのでので今回対応方法をメモ。
考え方としてはiconvコマンドを利用して、SJISファイルをUTF8ファイルに変換してからPHPで取り込むという方法。
exec("iconv -f sjis-win -t utf-8 " . $path . " -o " . $path);
$handle = fopen($path, "r");
$row = fgetcsv($handle, 1024, ',', '"');