Oliver García: Lösung für das leidige Umlautproblem bei Formularübergabe an PERL

Beitrag lesen

Hallo Bernhard,

Weiterhin werde ich aber nicht ganz schlau aus Deiner Problemstellung.
Handelt es sich bei Deinem Problem darum, daß die _Elementnamen_ im Formular unter IE 5.0 nicht automatisch kodiert werden?

Nein, es geht nicht um die Elementnamen, es geht um das, was der User in das Formularfeld schreibt.
Wenn man z.B.: als Name "Hülöbäßer" im IE eingibt übergibt er "Hölübäßer" als Parameter an PERL. In NN übergibt er "üöäß".

Erstmal: ich habe das Verhalten von IE 5.0 jetzt einmal getestet und komme zu dem Ergebnis, daß er grundsätzlich - sowohl bei der GET- als auch bei der POST-Methode die Sonderzeichen erst einmal (richtig) kodiert und sie dann abschickt.
Daß das auf Deinen Seiten anders ist (wie ich auch festgestellt habe), kommt vermutlich daher, daß die Seite mit dem Formular selbst über JS generiert wurde (document.write). Vielleicht hilft es ja, wenn Du zusätzlich angibts: enctype="application/x-www-form-urlencoded"

Auch mit deinem Tip ...
$text =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C',hex($1))/eg;
... hab ich es probiert, funktioniert aber auch nicht.

Ich meinte nicht, daß damit die komischen Sonderzeichen zurückverwandelt werden können. Es handelt sich lediglich um die "unescape()"-Funktion bei Perl als Gegenstück für die escape()-Funktion unter JS, die ich für einen besseren Ansatz halte als die Lösung, die Du vorgeschlagen hattest (Umwandlung in oe, ae, etc.).

Eine einfacherer Lösung wäre es aber letztlich wohl, auf der Perl-Seite, alle "ö" in "ü", alle "ü" in ö" etc. umzuwandeln.

Gruß,

Oliver