Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 03. Oktober 2018 18:36

schneesturm
hat von CMS/ms gehört
Registriert: 03. März 2017
Beiträge: 14

[GELÖST] FormBrowser CSV-Export Problem (Umlaute)

Hallöchen

Ich habe einige umfangreiche FormBuilder Formulare, die Emails senden und die eingegebenen Daten im FormBrowser-Modul speichern (CMS und alle Module auf der neusten Version). Dieses kann die Daten als CSV-Datei exportieren, allerdings gibt es mit den Dateien zwei Probleme.

1. Trotz utf-8 Export wollen die Umlaute nicht richtig mitmachen. Nur via Excel Import-Funktion kann ich die Daten ins korrekte Format würgen. Schön wäre ein sauberer Export ohne Mätzchen.

2. Die Dateien werden als XLS heruntergeladen, obwohl es sich um CSV-formatierte Daten handelt. Hier muss ebenfalls von Hand nachgeholfen werden.

Ich habe einen uralten und leider nicht (mehr?) funktionierenden Lösungsansatz im Bug Tracker gefunden:
http://dev.cmsmadesimple.org/bug/view/3308

Für Tipps und Lösungsansätze bin ich natürlich sehr dankbar.

Beitrag geändert von schneesturm (04. Oktober 2018 21:59)

Offline

#2 04. Oktober 2018 14:25

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [GELÖST] FormBrowser CSV-Export Problem (Umlaute)

Wie sehen die Umlaute aus?
a) Kryptische Zeichen?
b) Schwarze Raute mit weißen Fragezeichen?
c) Nur Fragezeichen?

Mit welchem Enconding stehen die Daten in der Datenbank?
(Also mal mit phpMyAdmin o.ä. schauen, in welchem Format die Daten in den Tabellen gespeichert werden und ob die Umlaute dort korrekt sind.)

zu a): Sieht aus als würden UTF-8 Daten doppelt codiert werden.
zu b): Sieht aus, als wären die ausgelieferten Daten nicht UTF-8 sondern ISO o.ä.
zu c): Sieht aus, als wären die Daten nicht UTF-8-codiert in der Datenbank gespeichert.

Nur via Excel Import-Funktion kann ich die Daten ins korrekte Format würgen.

Wie genau stellst Du das an?
Daraus lässt sich ggfs. auch ableiten in welchem Format die Daten tatsächlich exportiert wurden.

Was das Problem mit dem xls-Format angeht, das ist lediglich ein Übersetzungsfehler.
Erstelle folgende Datei "/assets/module_custom/FormBrowser/lang/de_DE.php". Dort schreibst Du folgendes rein:

$lang['export_spec'] = 'FormBuilderExportdatei-%s-%s.csv';


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 04. Oktober 2018 15:18

schneesturm
hat von CMS/ms gehört
Registriert: 03. März 2017
Beiträge: 14

Re: [GELÖST] FormBrowser CSV-Export Problem (Umlaute)

NaN schrieb:

Wie sehen die Umlaute aus?
a) Kryptische Zeichen?
b) Schwarze Raute mit weißen Fragezeichen?
c) Nur Fragezeichen?

Mit welchem Enconding stehen die Daten in der Datenbank?
(Also mal mit phpMyAdmin o.ä. schauen, in welchem Format die Daten in den Tabellen gespeichert werden und ob die Umlaute dort korrekt sind.)

zu a): Sieht aus als würden UTF-8 Daten doppelt codiert werden.
zu b): Sieht aus, als wären die ausgelieferten Daten nicht UTF-8 sondern ISO o.ä.
zu c): Sieht aus, als wären die Daten nicht UTF-8-codiert in der Datenbank gespeichert.

Nur via Excel Import-Funktion kann ich die Daten ins korrekte Format würgen.

Wie genau stellst Du das an?
Daraus lässt sich ggfs. auch ableiten in welchem Format die Daten tatsächlich exportiert wurden.

Was das Problem mit dem xls-Format angeht, das ist lediglich ein Übersetzungsfehler.
Erstelle folgende Datei "/assets/module_custom/FormBrowser/lang/de_DE.php". Dort schreibst Du folgendes rein:

$lang['export_spec'] = 'FormBuilderExportdatei-%s-%s.csv';


Hallo Nan, danke für deine Antwort.

Hier ein Beispiel: "Weitere Grössen auf Anfrage" wird zu "Weitere Grössen auf Anfrage"

Die Datenbank ist utf-8 und im Backend sind auch alle Zeichen korrekt. Ich habe mittlerweile festgestellt, dass OpenOffice und Numbers mit dem Output umgehen können. Allerdings bleibt der korrekte Excel-Support wichtig.

Excel-Import mache ich so: Neues Dokument, dann Ablage > Importieren > CSV-Datei (dort kann utf-8 etc. eingestellt werden)

Der Tipp mit dem Übersetzungsfehler ist Gold wert, vielen Dank! Leider hats mit dem "assets/module_custom/FormBrowser/lang/de_DE.php" File nicht gehauen (string wird im Admin-Bereich über dem Header angezeigt?!), weshalb ich temporär direkt in der Sprachdatei editiert habe.


Schonmal vielen Dank, jetzt bin ich einen Schritt weiter!

Beitrag geändert von schneesturm (04. Oktober 2018 15:19)

Offline

#4 04. Oktober 2018 15:48

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [GELÖST] FormBrowser CSV-Export Problem (Umlaute)

(string wird im Admin-Bereich über dem Header angezeigt?!)

Sorry, mein Fehler:

<?php
$lang['export_spec'] = 'FormBuilderExportdatei-%s-%s.csv';

Das "<?php" muss da noch mit rein.

Ich habe mittlerweile festgestellt, dass OpenOffice und Numbers mit dem Output umgehen können.

Erklärt warum ich das Problem nicht reproduzieren konnte.
Muss mal den Rechner wechseln.

Aber wenn es Dir ohnehin auf Excel ankommt, dann nimm doch als Export-Kodierung iso-8859-1 oder windows-1252. Oder gibt es einen bestimmen Grund, warum du unbedingt utf-8 nutzen willst?

Das Problem scheint zu sein, dass Excel eine CSV-Datei nur dann als UTF-8-codiert erkennt, wenn ein sogenanntes BOM existiert. D.h. man müsste im PHP-Code, dem CSV-Inhalt dieses BOM voranstellen, damit es auch in Excel funktioniert. Ein kurzer Test hat ergeben, dass OpenOffice damit keine Probleme zu haben scheint. Also müsstest Du nur in der Datei "/modules/FormBrowser/action.admin_export_xls.php" die Zeile 65:

if($encoding = 'utf-8') $reportString = utf8_encode($reportString);

so ändern:

if($encoding = 'utf-8') $reportString = chr(0xEF).chr(0xBB).chr(0xBF) . utf8_encode($reportString);

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 04. Oktober 2018 16:10

schneesturm
hat von CMS/ms gehört
Registriert: 03. März 2017
Beiträge: 14

Re: [GELÖST] FormBrowser CSV-Export Problem (Umlaute)

<?php
$lang['export_spec'] = 'FormBuilderExportdatei-%s-%s.csv';

Das "<?php" muss da noch mit rein.

Klasse! Wieder was dazu gelernt für künftige Übersetzungsprobleme. Habe bereits einen zweiten (unwichtigen) Fehler gefunden: $lang['exporttoexcel'] = 'Nach Excel exportieren (CVS-Format)';)

Das Problem scheint zu sein, dass Excel eine CSV-Datei nur dann als UTF-8-codiert erkennt, wenn ein sogenanntes BOM existiert. D.h. man müsste im PHP-Code, dem CSV-Inhalt dieses BOM voranstellen, damit es auch in Excel funktioniert. Ein kurzer Test hat ergeben, dass OpenOffice damit keine Probleme zu haben scheint. Also müsstest Du nur in der Datei "/modules/FormBrowser/action.admin_export_xls.php" die Zeile 65:

if($encoding = 'utf-8') $reportString = utf8_encode($reportString);

so ändern:

if($encoding = 'utf-8') $reportString = chr(0xEF).chr(0xBB).chr(0xBF) . utf8_encode($reportString);

Sieht nach einer perfekten Lösung aus – aber ev. ist das gar nicht mehr notwendig, da Excel schon beim öffnen der CSV-Datei fragt, wie man damit umgehen soll.

Hast auf jeden Fall was gut bei mir! Nimmst du PayPal-Spenden o.ä.?

Offline

#6 04. Oktober 2018 16:28

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [GELÖST] FormBrowser CSV-Export Problem (Umlaute)

Wenn Du willst, spende dem Forum  smile
(Oben rechts)


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#7 04. Oktober 2018 21:58

schneesturm
hat von CMS/ms gehört
Registriert: 03. März 2017
Beiträge: 14

Re: [GELÖST] FormBrowser CSV-Export Problem (Umlaute)

NaN schrieb:

Wenn Du willst, spende dem Forum  smile
(Oben rechts)

Hab ich gemacht, nochmals Danke :-)

Offline