Webform: Wenn ich "Ergebnisse" "Herunterlade", dann erscheint zwischen jedem Buchstaben HEX: 00
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-10268.jpg)
am 17.04.2011 - 13:21 Uhr in
Ich habe in einem Sub-Theme von ZEN ein Formular eingebaut (webform). Wenn das ausgefüllte Formular abgesendet wird, erscheint es an der Ziel-Mail-Adresse ordentlich mit allen Daten. Aber wenn ich das gespeicherte Ergebnis mit dem Tab "Ergebnisse" und weiter mit dem Tab "Herunterladen" auf meinen PC lade, habe ich in der Weiterverarbeitung (Übertragen in eine SugarCRM-Datenbank) Probleme. Z.B. wird nach der Übertragung im Firefox ein "?" zwischen den Buchstaben angezeigt.
Ich habe mir die heruntergeladene Datei in einem HEX-Editor angesehen und bemerke, dass zwischen jeden Buchstaben ein HEX: 00 eigefügt wurde. (Siehe Anhang).
Weiters werden bei Auswahl von "select list options" sowohl bei Wahl von "Separate" als auch von "Compact" identische Dateien herunter geladen.
Frage 1: Haben die HEX: 00 zwischen den Buchstaben eine Bedeutung ?
Frage 2: Wie ist der Unterschied zwischen "Separate" und Compact" zu interpretieren, wenn in beiden Fällen die gleichen Dateien heruntergladen werden?
Danke für Eure Hilfe.
Albert
Anhang | Größe |
---|---|
Form_download_1.jpg | 490.65 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
Schau dir mal die Codierung
am 17.04.2011 - 19:50 Uhr
Schau dir mal die Codierung der Datei an - da Drupal normalerweise mit UTF-8 arbeitet, kann es sein, dass dir Sonderzeichen in deinem Editor mit Fragezeichen dargestellt werden.
In Ultraedit oder Notepad++ (oder Textwrangler auf dem Mac) kannst du die Zeichensätze ganz einfach umstellen / bzw. die Datei dann auch korrekt öffnen.
SteffenR
Es geht nicht um die Darstellung (UTF-8)
am 17.04.2011 - 20:49 Uhr
Danke Steffen,
aber ich habe meine Frage anscheinend nicht klar definiert:
Im HEX-Editor sehe ich (unabhängig von einer Codierung), welche Zeichen in der Datei vorkommen. Und in diesem Download (/node/xy/webform-results/download) werden eben (wie Du im Anhang siehst) zwischen JEDEM Buchstaben das Sonderzeichen NUL (Hex: 00) eingefügt. Das Wort "Titel" erscheint also als als T NUL i NUL t NUL e NUL l NUL. Wie und ob überhaupt NUL dargestellt wird, ist anscheinend vom Browswer abhängig.
Ich habe inzwischen gesehen, dass man diese Datei mit Excel umformatieren kann, aber ich muss einen möglichst einfachen Workflow finden, dass angelernte Sekretärinnen mit möglichst wenigen Clicks die heruntergeladene Datei in die Datenbank importieren können.
Daher bleibt meine Frage offen: Warum fügt Drupal (bzw.das webform-Modul) zwischen die Buchstaben ein NUL ein? Kann man das (meinetewegen im Modul-Code) vermeiden?
Das verwendete Modul ist sicher über ein Jahr alt (ich habe das Grundgerüst der Webseite von jemand anderem übernommen). Weiss jemand, ob eine neuere Version diesen Fehler nicht mehr hat?
(Von drupal.org habe ich noch keine Antwort bekommen)
Mit herzlichen Grüßen
Albert
Kannst du uns denn hier
am 17.04.2011 - 22:05 Uhr
Kannst du uns denn hier einmal einen Beispieldatensatz zur Verfügung stellen ? Ich betrachte mir die Ergebnisse von Webforms normalerweise nicht in einem Hex-Editor sondern verwende hier die von mir angesprochenen Texteditoren bzw. zur weiteren Verarbeitung OpenOffice bzw. Libreoffice..
Ich habe gerade selbst einmal von einer recht gut besuchten Seite die Ergebnisse eines Webforms runtergeladen - sowohl in LibreOffice als auch im Texteditor waren dort keine Probleme zu erkennen ( normale Umlaute etc).. Wie hast du dir denn den Export konfiguriert (Screenshot meiner Exporteinstellungen)?
Mit den Beispieldaten könnte man dann einmal probieren dein Problem zu rekonstruieren..
Gruß,
SteffenR
Hallo
am 18.04.2011 - 06:26 Uhr
ich hoffe ich bin nicht voreilig.
Aber Steffen hat vermutlich recht.
Dass vor jedem Buchstaben ein Charakter 0x00
liegt eben daran, dass UTF-8 2 Bytes pro
Zeichen hat.
Die ersten 256 Charakter sind identisch mit dem ASCII Zeichensatz.
Prüf mal deinen Browser.
Zeichencodierung zeigt er an?
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
oder
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Ich vermute in Deinem Fall dass der Browser das 2. anzeigt, Drupal aber UTF-8 ausgibt.
Lieber Gruss
@Hyp1: Es geht in diesem
am 18.04.2011 - 07:50 Uhr
@Hyp1: Es geht in diesem Thread nicht um die Auslieferung von normalen Seiten im Drupal sondern um den Download von Ergebnissen aus einer Webform. Hier hat man die Auswahl zwischen einer Datei für Excel oder einer "normalen" CSV mit entsprechenden Trennzeichen.. Die Zeichensatzproblematik hatte ich ja in meinem vorigen Posting schon mal mit angesprochen - wie du schon richtig erwähnt hattest werden die Zeichen in der HEX Darstellung dann wohl als 0x00 dargestellt.
SteffenR
Egal ob es eine Seite ist
am 18.04.2011 - 07:47 Uhr
Egal ob es eine Seite ist oder ein Download.
Wenn im HTTP Header eine falsche Codierung
mitgegeben wird ist der hat er diese 0x00 Zeichen im Text.
Also statt
Content-Type: text/html; charset=utf-8
das hier:
Content-Type text/html; charset=iso-8958-1
LG
UTF-8 hat 2 bytes
am 18.04.2011 - 13:51 Uhr
Danke an beide,
Der Hinweis von Hyp1 erinnerte mich, dass UTF-8 ein Zeichen mit 2 bytes repräsentiert.
Das Problem liegt dann eher bei der Datenbank (SugarCRM), die zwar auch auf UTF-8 eingestellt ist, aber offenbar das NUL zwischen den ASCII-Zeichen falsch interpretiert. (Wenn man nämlich Daten innerhalb der Datenbank exportiert/importiert, haben diese Daten kein NUL zwischen den Zeichen.)
Ich werde mir das genauer ansehen und dann berichten.
Albert