Bernhard Peissl: Lösung für das leidige Umlautproblem bei Formularübergabe an PERL

Beitrag lesen

Der Meinung bin ich auch. Bernhard sollte mal die Zeichensatz-
Einstellungen seines IE5 checken. Wenn er sie zurueck auf ISO-8859-1

Hallo Calocybe,

Ich glaube, da liegt ein ziemliches Verstaendnisproblem bei Dir vor. Es ist einfach so, dass in einer URL nicht alle Zeichen erlaubt sind. Z.B. duerfen Leerzeichen oder Umlaute in einer URL nicht vorkommen. Will man solche Zeichen doch uebergeben, muss man sie auf der Clientseite codieren und auf der Serverseite wieder entsprechend decodieren.

Das hab ich gemeint, bloss verallgemeinere ich gern. Ich weiss auch dass der Reguläre Ausdruck genau diese %20 wieder in Leerzeichen zurückverwandelt, aber als ich mit deinem regulären Trick-Ausdruck gesehen habe, wie der Query-String ankommt, konnte ich mir einfach nicht erklären, wieso er diese komischen Zeichen ausspuckt, wo doch bei NN der string genauso aussieht, und auch das richtige ausgibt.

Wie das allerdings genau funktioniert mit den Ascii-Tabellen und dem ver_hexe_en hab ich vorher nicht gewusst, also danke an dieser Stelle!

Der von Dir verwendet Unicode-Zeichensatz ist nun aber ganz anders. Er verwendet fuer manche Zeichen nicht nur ein Byte pro Zeichen, sondern zwei. Deshalb kann er auch nicht nur 256 Zeichen darstellen, sondern... na jedenfalls mehr. Das heisst aber auch, dass Dein Browser gleich zwei Bytes codieren muss, um z.B. einen Umlaut im QueryString zu uebergeben. So hat er z.B. bei Dir aus einem Ö die Sequenz %C3%96 gemacht. Nun geht Dein Perlscript beim decodieren aber von einem Zeichensatz mit nur einem Byte aus. Deshalb wird diese Sequenz zu zwei Zeichen dekodiert, naemlich à und -.

Das heisst also, banal ausgedrückt, dass Perl nicht weiss, dass der Browser nicht den normalen Standard-Zeichensatz nach Iso-Norm 8... verwendet hat, sondern diesen ...... Sonder-Zeichensatz, den kein Schwein kennt ?!!
Und da er das natürlich nicht weiss, zerlegt er %c3%9C in %c3 und %9C also in 2 verschiedene Zeichen, und so entstehen also meine ä's, hab ich ungefähr recht?
Das heisst aber auch, dass ich da gar nix machen kann, denn wenn ein User mit nem vietnamesischen Zeichensatz auf meiner Seite was bestellen will .... Ich müsste für alle Sonderzeichen der gängigsten Zeichensätze (zum Beispiel für Französische) eine Ersetzungsroutine schreiben! Is ja irre.

Bei einigen Seiten hab ich gesehen, dass es irgend ein meta-tag gibt, wo man den Zeichensatz für eine Seite vorgeben kann.
<meta name="charset" content="ISO-88..."> oder so ähnlich. Das werd ich noch ausprobieren, und wenn das auch nicht klappt, können mich die blöden Umlaute mal!

Alles klar? ;-)

Scherzkeks :-(

Dankend,
Bernhard