lixx: Datei als UTF-8

Beitrag lesen

Hallo!

Ich plage mich seit längerem mit einer CSV-Datei herum, die über PHP heruntergeladen werden soll.

Was ich gerne hätte ist eine Art universelle UTF-8 Datei für die Anzeige in einem Textprogramm, für Excel oder für Outlook-Adressimport. Ist das irgendwie Möglich oder nur ein Wunschtraum von mir?

Die Daten kommen aus eine MySQL-DB deren "Zeichensatz / Kollation der MySQL-Verbindung" auf utf8_general_ci eingestellt sind und werden mit PHP an den Browser geschickt:

----------
$csv = implode(NL, $csv);

header('Content-Type: text/plain; charset=utf-8');
header("Content-Type: application/force-download");
header('Content-Length: '.strlen($csv));
header('Content-Disposition: attachment; filename="'.$fname.'"');

print $csv;

exit;
----------

$csv enthält die Zeichen "ßüä+ěš"

Folgende Ansätze habe ich gefunden und probiert:

$csv = implode(NL, $csv);
-> Browser: OK, wenn man die Zeichenkodierung auf UTF8 setzt.
-> Excel: kryptisch
-> Outlook: kryptisch

$csv = utf8_decode(implode(NL, $csv));
-> Browser: OK, wenn man die Zeichenkodierung auf ISO-8859-1 setzt. Nur werden die letzen beiden Tschechischen Zeichen nicht erkannt.
-> Excel: kryptisch
-> Outlook: Wie Browser

$csv = "\xEF\xBB\xBF".implode(NL, $csv);
-> Browser: OK, Zeichenkodierung wird erkannt.
-> Excel: kryptisch und "\xEF\xBB\xBF" wird angezeigt
-> Outlook: kryptisch und "\xEF\xBB\xBF" wird angezeigt

$csv = chr(255).chr(254).mb_convert_encoding(implode(NL, $csv), 'UTF-16LE', 'UTF-8');
-> Browser: OK, Zeichenkodierung wird erkannt und auf UTF-16 gesetzt.
-> Excel: OK
-> Outlook: wird nicht angezeigt

Hat damit jemand Erfahrung?

lg lixx