dedlfix: Sonderzeichenproblem - utf-8 - manche funktionieren, manche nich

Beitrag lesen

Hi!

Ich habe ein Sonderzeichenproblem was mich noch zum verzweifeln bringt. Ich will Daten aus eine Datenbank abfragen (Daten sind in utf-8 gespeichert)

Das hast du geprüft, beispielsweise mit phpMyAdmin wird alles richtig angezeigt?

und diese in einem excel-file ausgeben. Das mache ich mit folgendem header:
header("Content-type: application/vnd-ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=export.xls");

Eine charset-Angabe im HTTP-Header ist nicht zielführend, denn die wertet nur der Browser aus. Da er aber kein Excel-Plugin hat, ruft er die externe Anwendung Excel auf, kann der aber die charset-Einstellung nicht mitteilen, weil das nicht vorgesehen ist. Excel steht also nur der Dateiinhalt zur Verfügung, so wie das auch bei einer vom Dateisystem gelesenen Datei der Fall ist.

Mein Problem ist nun, dass die Daten sehr komische Sonderzeichen aus dem Litauischen enthalten und mache der Sonderzeichen richtig angezeigt werden (ein s mit umgedrehtem dach drauf), manche allerdings werden als Fragezeichen angezeigt (ein e mit einem punkt oben drauf z.b.).

Da musst du nun in die Excel-Dokumentation schauen und nachlesen, welche Kodierung es für die Daten in einer Datei erwartet und auch, ob und wie man diese innerhalb der Datei bekanntgeben muss. Das ist sicher auch abhängig von der Version des Excel-Formats.

Hab schon mit Einstellungen wie folgenden rumprobiert:

mysql_query("SET NAMES 'utf-8'");
mysql_query("SET character_set_server='utf-8");
mysql_query("SET character_set_client='utf-8'");
mysql_query("SET character_set_connection='utf-8'");
mysql_query("SET character_set_results='utf-8'");

SET NAMES ist ausreichend. Das setzt bereits character_set_client, -connection und -results. Und character_set_server wird für Abfragen nicht benötigt.

Lo!