Hallo!
Nein, es ist ja nirgends die Info gespeichert, dass es UTF-8 ist. Das ist ja das Problem. Das müsste ich beim PHP File irgendwo mitgebeben.
Du hast doch schon erwähnt, dass die Ausgabe des CSV Files mit UTF-8 funktioniert?
In PHP gibst du im Header mit um welches Characterset es sich handelt.
Das machst du wahrscheinlich mit
Header("Content-Type: text/csv; charset=UTF-8")
Damit bekommt es der Browser mit um welches charset es sich handelt und kann die Daten dementsprechend interpretieren.
Jetzt speicherst du das File auf der Platte und damit ist die Information um welchen Charset es sich handelt aber unwiederruflich dahin. Diese Info wird nicht im File abgespeichert.
Wenn du jetzt das File von der Platte mit Excel aufmachst, weiß Excel nicht um welchen Charset es sich handelt. Es nimmt das Standardcharset das nicht unbedingt UTF-8 sein muss. Wenn Excel jetzt die Daten falsch interpretiert, dann musst du dafür in den Excel Einstellungen sorgen, dass es die Daten als UTF-8 interpretiert.
mfg
frafu