Tach!
Nun meldet der Anwender ein Folgeproblem. Excel kommt mit UTF-8 nicht zurecht. Ich arbeite mit LibreOffice und der/die/das erkennt UTF-8, fragt aber sicherheitshalber noch mal:
Die Frage ist, woran Excel die verwendete Kodierung erkennen soll.
Es ist prinzipbedingt nicht (trivial) möglich, Kodierungen anhand der Binärwerte zweifelsfrei zu erkennen. Es ist in jedem Fall sinnvoll, dem empfangenden System mitzuteilen, welche Kodierung für den Inhalt verwendet wurde. Dummerweise gibt es kein allgemeingültiges System, die Kodierungsinformation für Dateien mitzuführen. Besonders alte Formate haben auch keine Angabe innerhalb des Dokuments vorgesehen oder per Definition einen Standard festgelegt.
Kann ich das beeinflussen, etwa indem ich per PHP noch einen header mitsende?
Bei UTF-8 kann man eine BOM voranstellen, die meist als Indikator verwendet wird, dass es sich um UTF-8 handelt.
Was ist, wenn die CSV-Datei zunächst gespeichert wird, dann müsste sie ein BOM (byte-order mark) enthalten?
Aufgrund welcher Magie? Dafür musst du schon selbst sorgen.
Oder muss der Empfänger in seinem Windoof-Umfeld irgendwas schrauben?
Nein. Du kannst die Default-Kodierung der Windows-Variante des Zielcomputers verwenden. Das ist hierzulande üblicherweise Windows-1252. Oder du speicherst als UTF-8 mit BOM, dann erkennt Excel die Kodierung.
dedlfix.