André Muschter: Zeichen-Maskierung

Hallo, liebe Fachkollegen,

im Parameter-Datenstrom eines Perl-Skriptes werden bestimmte Zeichen (Sonderzeichen, ASCII-Codes
über 128) maskiert übertragen (bzw. sollten zumindestens!). Aus einem

ü   wird demnach ein   %FC

Am Anfang eines jeden Perl-Skriptes sollte demnach die Möglichkeit bestehen, diese Hexadezimal-Codes
in lesbare ASCII-Zeichen umzuwandeln. Dies kann man erreichen mit

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

Mich würde nun an dieser Stelle interessieren, wie der umgekehrte Weg funktioniert, d.h. eine elegante Methode,
wie ich bestimmte ASCII-Zeichen in diesen %HexaCode wandeln kann, um den Ausgabestrom, der evtl.
Sonderzeichen etc. enthalten könnte, exakt abzuschicken. Die Anweisung sollte der obigen ähneln, also in
der Form:

$value =~ s/[äöüÄÖÜß#$]/???????????/eg;

Was müßte an Stelle der Fragezeichen für ein Ausdruck stehen, um äöüÄÖÜß#$ in %HexaCodes
umwandeln zu können?

Schöne Grüße

André

  1. Hi,

    Am Anfang eines jeden Perl-Skriptes sollte demnach die Möglichkeit bestehen, diese Hexadezimal-Codes
    in lesbare ASCII-Zeichen umzuwandeln. Dies kann man erreichen mit

    use CGI;
    $value = CGI::unescape($value);

    Mich würde nun an dieser Stelle interessieren, wie der umgekehrte Weg funktioniert,

    $value = CGI::escape($value);

    Cheatah

    1. Hi,

      Am Anfang eines jeden Perl-Skriptes sollte demnach die Möglichkeit bestehen, diese Hexadezimal-Codes
      in lesbare ASCII-Zeichen umzuwandeln. Dies kann man erreichen mit

      use CGI;
      $value = CGI::unescape($value);

      Mich würde nun an dieser Stelle interessieren, wie der umgekehrte Weg funktioniert,

      $value = CGI::escape($value);

      Cheatah

      Schönen Dank für Deine Hilfe, Cheatah. Das ist es. Habe gleich mal in der cgi.pm nachgeschaut. :)
      Also, danke nochmals
      André