Tach!
Ich würde die Datei einmal mit fgetcsv() einlesen und Zeile für Zeile konvertiert wieder wegschreiben.
In dem Fall müsstest du sie Zeile für Zeile und Wert für Wert konvertieren.
Da die Codepoints der Steuerzeichen aber alle unter 128 liegen sollten. könnte man vielleicht sogar die komplette Datei als String konvertieren. Das habe ich jetzt aber nicht ausprobiert (Tablet).
Die Trennzeichen sind auch Zeichen, und selbst wenn sie außerhalb von ASCII lägen, müssten sie in der Zielkodierung gespeichert werden. Insofern ist es kein Problem, die Datei in einem Stück zu konvertieren.
dedlfix.