URL decoding
Paul Brunner
- perl
Hallo,
Ich versuche den Inhalt eine Formularfeldes in eine Datei zu schreiben, die Umlaute bringen mich zur Verzweiflung:
Der Ablauf:
Das Problem:
Wie kriege ich die Umlaute korrekt rüber?
Gruss
Paul
Wie kriege ich die Umlaute korrekt rüber?
Benutze doch das CGI Modul, das ist dafür da und wandelt alles automatisch um.
use CGI;
my $foo = CGI::param('foo');
print FH $foo;
Struppi.
Hallo Struppi,
Benutze doch das CGI Modul, das ist dafür da und wandelt alles automatisch um.
Das dachte ich auch, ist aber wohl nicht der Fall:
print FH $foo;
Ausgabe Datei: öü����
print $foo;
Ausgabe STOUT: öäüÖÄÜß
Irgendwo ist da noch der Wurm drin.
Gruß
Paul
print FH $foo;
Ausgabe Datei: öü����print $foo;
Ausgabe STOUT: öäüÖÄÜßIrgendwo ist da noch der Wurm drin.
Was für einen Zeichensatz verwendest du auf deiner Seite?
Struppi.
Was für einen Zeichensatz verwendest du auf deiner Seite?
ISO-8859-1
Paul
Hallo,
bist du sicher dass das der browser auch so sieht?
gruss
Hallo,
bist du sicher dass das der browser auch so sieht?
Denn Inhalt der Datei kann ich direkt per FTP überprüfen.
Das Problem tritt schon beim schreiben und nicht erst beim erneuten einlesen und wieder anzeigen auf.
Gruss
Paul
Moin!
print FH $foo;
Ausgabe Datei: öü����print $foo;
Ausgabe STOUT: öäüÖÄÜßIrgendwo ist da noch der Wurm drin.
Nicht der Wurm ist drin, sondern UTF-8.
- Sven Rautenberg
Guten Abend,
Nicht der Wurm ist drin, sondern UTF-8.
Wieso liefert CGI.pm im UTF-Format und wie kann ich das umstellen?
Gruss
Paul
Moin!
Nicht der Wurm ist drin, sondern UTF-8.
Wieso liefert CGI.pm im UTF-Format und wie kann ich das umstellen?
Tut es nicht. Dein Browser liefert im UTF-8-Format. Warum auch immer...
Du solltest in deinem Formular in jedem Fall ein accept-charset angeben, und dieses auf den benötigten Zeichensatz einstellen.
Bedenke: ISO-8859-1 enthält KEIN Eurozeichen. Wenn du ein Eurozeichen brauchst, und allgemein sicher sein willst, dass der Browser alle eingebbaren Zeichen auch abschicken kann, dann verwende UTF-8. Ansonsten kriegst du in letzter Konsequenz von den Browsern nur unverwertbaren Müll! Das sieht auf den ersten Blick zwar nicht so aus, aber es ist so. Manche Browser denken sich nämlich sehr abenteuerliche Aktionen aus, wenn es darum geht, mit im gewünschten Zeichensatz nichtcodierbaren Zeichen umzugehen.
- Sven Rautenberg
Hallo,
Tut es nicht. Dein Browser liefert im UTF-8-Format. Warum auch immer...
Also... der Browser schickt die Daten des Formulares in dem durch die HTML-Formular-Seite festgelegten Zeichensatz, bei denen wiederum im original Query-String alle nicht ASCII-Zeichen URL-encoded sind?
Du solltest in deinem Formular in jedem Fall ein accept-charset angeben, und dieses auf den benötigten Zeichensatz einstellen.
Das accept-charset-Attribut hat schließlich geholfen, obwohl zumindest im Testfall für Mozilla das entsprechende meta-Tag auch ausgereichet haben sollte.
Danke
Paul
Hallo Paul,
Tut es nicht. Dein Browser liefert im UTF-8-Format. Warum auch
immer...Also... der Browser schickt die Daten des Formulares in dem durch
die HTML-Formular-Seite festgelegten Zeichensatz, bei denen
wiederum im original Query-String alle nicht ASCII-Zeichen
URL-encoded sind?
Theoretisch ja.
Faktisch gibt es da leider Besonderheiten. Der Mozilla, der IE und
einige der Mac-Browser schicken Windows-1285 (oder so), wenn ein
Euro-Zeichen in einer Latin1-Seite eingegeben wurde. Der Mozilla
schickt &#<unicode-nr>; wenn das Zeichen, das man eingibt, im
Zeichensatz der Seite nicht vorhanden ist, ohne jedoch die anderen
Zeichen nachzubehandeln (z. B. um aus < &aml;lt; zu machen,
damit man unterscheiden kann, was der Browser gemacht hat und was
der User eingegeben hat). Konqueror nimmt stattdessen ein
Fragezeichen für das betreffende Zeichen.
Du solltest in deinem Formular in jedem Fall ein accept-charset angeben, und dieses auf den benötigten Zeichensatz einstellen.
Das accept-charset-Attribut hat schließlich geholfen, obwohl
zumindest im Testfall für Mozilla das entsprechende meta-Tag
auch ausgereichet haben sollte.
Mozilla ignoriert das accept-charset-Attribut.
Grüße,
CK
Hallo Christian,
Theoretisch ja.
Faktisch gibt es da leider Besonderheiten. [...]
Mozilla ignoriert das accept-charset-Attribut.
Zwischen durch ging es mal wunderbar in Mozilla, IE6 und OP7, jetzt tuts wieder nicht mehr :-((
Ich habe inzwischen komplett auf UTF-8 umgestellt (alle html, xml und xsl files). Geholfen hats nicht.
Gruss
Paul
Hallo,
Das Problem:
- Formular: äöüÖÄÜß
- Ergebnis: äöüÃÃÃÃ
Wie kriege ich die Umlaute korrekt rüber?
Mit demselben Zeichensatz wie die Datei geschrieben wird sollte sie auch wieder ausgelesen werden.
Gruss, Rolf