Mit 'escape' bist du auf dem richtigen Weg. Den ganzen URL-encoding-Kram, den Browser und Webserver von sich aus machen, musst Du mit Ajax zu Fuss erledigen. escape() und unescape() sind JavaScript-Funktionen. Du brauchst auch die passenden Funktionen zu in PHP.
Nein, braucht man nicht. PHP ist so freundlich, in $_GET und $_POST bereits die transportsicherungsbefreiten Daten zur Verfügung zu stellen. Beim Zurücksenden in Richtung Client benötigt man ebenfalls kein URL-Encoding, da die Daten ja wie ganz normale Dokumente transportiert werden.
In Perl auch nicht. Das CGI Modul übernimmt wie in allen anderen CGI Anwendungen auch, die Dekodierung und umgekehrt ist es wie in PHP.
Struppi.