文字化け

csvファイルを読み込んだ時に文字化けする時、文字コードの変換を行うと解決することを学びました。 また、ファイル全体を一度読み込んで変換して一時ファイルを作り、それを読み込む方が無駄がないということも学びました。

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

$data = file_get_contents(".csv");
$data = mb_convert_encoding($data, 'UTF-8', 'sjis-win');
$temp = tmpfile();
$meta = stream_get_meta_data($temp);

fwrite($temp, $data);
rewind($temp);

$file = new SplFileObject($meta['uri']);
$file->setFlags(SplFileObject::READ_CSV);

$csv  = array();

foreach($file as $line) {
  $csv[] = $line;
}

fclose($temp);
$file = null;

var_dump($csv);