aVogt
Returning Creator

Datei in anderem Zeichensatz generieren als bei Sprachen definiert wird

Hallo,

bei der Veröffentlichung eines Projektes, erzeuge ich eine csv-Datei (da stehen viele Datensätze aus Datenquellen drin).

Die csv-Datei kann mit Excel geöffnet werden. Dummerweise hat die csv-Datei UTF-8 als Encoding/Zeichensatz, und kann somit zwar mit Excel geöffnet werden, aber die Umlaute werden nicht richig angezeigt.

Excel fordert glaube "ANSI" (im Excel eine Datei als csv gespeichert und die hatt ANSI als

Encoding/Zeichensatz).

Wie bekomme ich nun die csv-Datei in den anderen Zeichensatz? Mir fällt da nicht wirklich etwas ein.

Einzigste Möglichkeit die ich gefunden habe, wäre eine zweite Sprache anzulegen, die den gewünschten Zeichensatz generiert.

Nachteil: Ich habe bei Inhalten/Medien/Struktur diese zweite Sprache im JavaClient. Da die csv-Datei automatisch ohne Nutzerzutun generiert wird, brauche ich die Anzeige nicht. Außerdem wird die csv-Datei mit nur einer Vorlage generiert.

Hatte jemand schon mal ein solches Problem und wenn ja wie hat er es gelöst?

Bin dankbar für jeden Tipp.

0 Kudos
4 Replies
feddersen
Community Manager

Ausgabe per CMS_SET in einen String speichern und per Mini-Script den String konvertieren.

String ansi = new String (utf8String.getBytes("UTF-8"),"ANSI");

0 Kudos

So was habe ich auch schon versucht, hat leider nicht geklappt, ich habs auch mit anderen Zeichensätzen versucht.

Übrigens ANSI wird nicht verstanden,Windows-1252 ist das Gegenstück (wird zumindest im Internet geschrieben)

Wahrscheinlich liegt es daran, dass die Datei selber noch vom Typ UTF-8 ist. Wenn ich die generierte UTF-8 csv-Datei (mit den nicht konvertierten Text) im Textpad öffne und diese dann im Zeichensatz ANSI speichere und dann in Excel öffne ist alles schön.

Da man wahrscheinlich den Typ nicht der csv-Datei nicht ändern kann, muss man den wohl nach der Generierung ändern oder hat jemand noch eine andere Idee?

0 Kudos

Im Template hat man keine Chance, das Datei-Encoding zu ändern. Die Datei ist zum Zeitpunkt, wo das Template die Kontrolle bekommt, bereits angelegt und die Ausgabe erfolgt mit dem definierten Encoding.

Der korrekte Weg wäre die Erzeugung einer Datei über ein Modul, so wie es das "build-in-Modul" FontImage macht (das schreibt Binärdaten).

Der ad-hoc Weg wäre eine Nachbearbeitung nach der Generierung, in der alle "*.csv" Dateien konvertiert werden.

Peter

Ich hab mich für die Nachbearbeitung nach der Generierung entschieden, das klappt nun wie gewünscht (mit "ISO-8859-1" - bei anderen Encodings fehlten wieder die Umlaute, bzw. wurden in Excel nicht richtig angezeigt)

0 Kudos