MySQL nach Excel exportieren: Probleme mit Umlauten

Hallo zusammen,

ich möchte gerne den Inhalt einer MySQL-Tabelle in ein Excel-Dokument exportieren. Hierfür benutzt ich folgendes Script:

[PHP]
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . „\t“;
}

while($row = mysql_fetch_row($export)) {
$line = ‚‘;
foreach($row as $value) {
if ((!isset($value)) OR ($value == „“)) {
$value = „\t“;
} else {
$value = str_replace(‚"‘, ‚„“‘, $value);
$value = ‚"‘ . $value . ‚"‘ . „\t“;
}
$line .= $value;
}
$data .= trim($line).„\n“;
}
$data = str_replace(„\r“,„“,$data);

if ($data == „“) {
$data = „\n(0) Records Found!\n“;
}
$date = date(„Y_m_d“);
$file.= $date.„benutzerdaten_export“;
header(„Content-Type: application/force-download“);
header("Pragma: ");
header(„Cache-Control: „);
header(„Content-Disposition: attachment; filename=“.$file.“.xls“);
header(„Expires: 0“);
print „$header\n$data“;
[/PHP]

Nun habe ich das Problem, dass Umlaute nicht korrekt angezeigt werden. Die Datenbank liegt im UTF-8 Format vor. Das Problem sollte also damit zusammenhängen. Wie kann ich das entsprechend umgehen?

skizZ

Du kannst die Daten vor Ausgabe in einen anderen Zeichensatz konvertieren mit PHP: iconv - Manual

Als Zielzeichensatz dann vermutlich Windows-1252. Es muss aber für sowas mittlerweile elegantere Lösungen geben. Irgendwann muss doch auch Excel mal den Umgang mit UTF-8 (Edit: bzw. Unicode insgesamt) lernen.

Ich würde da in jedem Fall noch ein wenig im Web suchen.

Edit: Um das noch kurz auszuführen: Windows-1252 deckt im Wesentlichen diese Zeichen ab:

Für den „westlichen“ Schriftbereich reicht das in der Regel, aber je weiter es etwa nach Osteuropa geht, desto mehr Zeichen werden nicht unterstützt.