AlexBausW: automatische Umwandlung von Html-Entities durch CGI.pm?

Hallo Leute,

Heute mal eine Frage von mir, da es nicht so viel zu beantworten gibt ;-)

Ich habe ein Skript, welches CGI.pm über die objektorientierte Schnittstelle nutzt:

$cgi = new CGI;

Es werden Daten aus Formularfeldern in hidden-fields eingebaut, wobei ich Anführungszeichen in die entsprechenden Entities umwandele.
Im Quelltext der Ausgabe steht dann auch korrekterweise (denke ich):

<input type="hidden" name="mean" value="[ahdt. &#34;Leistung Befehlender&#34;], Schulze [spätmhdt. ], lat. scultetus">

Also wurden die Anführungszeichen korrekt umgewandelt.
Wenn ich anschließend das Formular absende, kommt aber in $cgi->param('mean') anstelle von &#34; nur " an.
Meine Frage lautet also, wandelt CGI.pm Html-Entities automatisch in die entsprechenden Ascii-Zeichen zurück, und wenn ja, kann ich das beeinflussen? (Ich hab` natürlich nichts entsprechendes in der Dokumentation zu CGI.pm gefunden, nur das Sonderzeichen in Entities gewandelt werden, aber nicht daß dies auch umgekehrt gemacht wird)

Gruß AlexBausW

  1. Hi!

    <input type="hidden" name="mean" value="[ahdt. &#34;Leistung Befehlender&#34;], Schulze [spätmhdt. ], lat. scultetus">

    Also wurden die Anführungszeichen korrekt umgewandelt.
    Wenn ich anschließend das Formular absende, kommt aber in $cgi->param('mean') anstelle von &#34; nur " an.

    Logisch, denn &#34; ist das Entity fuer ". Das wird vom *Browser* ganz normal interpretiert (nicht von CGI.pm), warum auch nicht? Der Browser sendet also schon nur das ", schliesslich hast Du das ja ins Hidden-Feld geschrieben.

    So long

    1. Hallo Calocybe,

      <input type="hidden" name="mean" value="[ahdt. &#34;Leistung Befehlender&#34;], Schulze [spätmhdt. ], lat. scultetus">

      [...]

      Das wird vom *Browser* ganz normal interpretiert (nicht von CGI.pm), warum auch nicht? Der Browser sendet also schon nur das ", schliesslich hast Du das ja ins Hidden-Feld geschrieben.

      Erstmal vielen Dank für Deine Antwort.
      Wenn ich Dich also richtig verstanden habe, dann interpretiert der Browser, bevor er die Felder encoded und das Formular absendet, alle HTML-Entities, und wandelt diese in ihre Ascii-Zeichen zurück?
      Ich bin eben davon ausgegangen, daß der Browser Werte, die in den Feldern stehen, so wie sie sind encoded und anschließend überträgt. Ich werd das mal mit ein paar Get-Formularen abchecken.
      Trotzdem überrascht mich diese Verhaltensweise der/des Browser(s) dann doch ein wenig ;-)

      Gruß AlexBausW

      P.S.: Ist ja auch nicht schlimm, wenn ich " statt &#34; übergeben bekomme. Es wird eh zur Ausgabe im Browser gespeichert. Ich habe " nur 'maskieren' wollen, damit mein hidden-field nicht irgendwo mitten im text 'endet' ;-)
      <input type="hidden" name="mean" value="[ahdt. "Leistung Befehlender"], Schulze [spätmhdt. ], lat. scultetus">
      So kam bei mir nämlich nur "[ahdt. " an ;-(was ich nicht gleich bedacht hatte ;-)

      1. Hallo Alex ;o)

        Für das Archiv, falls es dort noch nicht steht: (und das man nicht immer bei den Herstellern nachschlagen muss, oder ist das vielleicht sogar HTML-Standard?)
        Nachdem ich mal ein paar Formulare versandt habe, musst ich feststellen, daß HTML-Entities in 'values' von Feldern (Vorbelegung) interpretiert werden, während Entities in der Eingabe urlcodiert übermittelt werden.

        Trotzdem bin ich noch wenig 'entäuscht' ;-) So verschwinden also die Mühevoll per Hand eingegebenen HTML-Entities in den Postings spätestens spätestens mit dem Reply, wenn der Antworter die Entities nicht wieder ergänzt :-(

        Gruß AlexBausW

      2. Hi again!

        Wenn ich Dich also richtig verstanden habe, dann interpretiert der Browser, bevor er die Felder encoded und das Formular absendet, alle HTML-Entities, und wandelt diese in ihre Ascii-Zeichen zurück?

        Eigentlich interpretiert er sie schon beim Parsen, also beim Laden der Seite.

        Trotzdem überrascht mich diese Verhaltensweise der/des Browser(s) dann doch ein wenig ;-)

        Ist zwar recht unbekannt, aber doch ziemlich logisch. Schliesslich will man auch in Attributwerten Umlaute und andere Zeichen verwenden, die man entweder auf der Tastatur nicht parat hat, oder aus HTML-Gruenden nicht direkt einsetzen kann ("<>).

        P.S.: Ist ja auch nicht schlimm, wenn ich " statt " übergeben bekomme. Es wird eh zur Ausgabe im Browser gespeichert. Ich habe " nur 'maskieren' wollen, damit mein hidden-field nicht irgendwo mitten im text 'endet' ;-)
        <input type="hidden" name="mean" value="[ahdt. "Leistung Befehlender"], Schulze [spätmhdt. ], lat. scultetus">
        So kam bei mir nämlich nur "[ahdt. " an ;-(was ich nicht gleich bedacht hatte ;-)

        Yepp genau, *deswegen* wird maskiert. Aber wenn der HTML-Quelltext dann geparst wurde, soll der Browser wieder das verwenden, was damit *gemeint* ist. (Steht auch so in der Spec irgendwo, ich glaube weil der Attributtype CDATA ist.) Das bringt auch noch andere Ueberraschungen bzw. Probleme mit sich: <../../sfarchiv/2000_3/t17178.htm#a86901> oder etwas ausfuehrlicher: http://ppewww.ph.gla.ac.uk/~flavell/www/formgetbyurl.html.

        So long