Um eine csv-Datei zu erstellen, in der die Umlaute richtig kodiert sind, muss man in seinem Projekt, welches im Normalfall UTF-8 kodiert ist, die Umlaute nach UTF-16LE kodieren. Diese Kodierung kann von Windows und Mac angezeigt werden.
$file = fopen('file.csv', 'w'); foreach ($rows as $row) { $row = array_map(function($cell){ return mb_convert_encoding($cell, 'UTF-16LE', 'UTF-8'); }, $row); fputcsv($file, $row, ';'); } fclose($file);