Hallo,
bisher habe ich einem Skript den $ENV{'QUERY_STRING'}
genommen und diesen mit uri_unescape
"lesbar" gemacht.
Das funktionierte früher wie erwartet.
Jetzt, 3 Monate später wird das Skript wieder benötigt, und ich erhalte den "lesbaren" String aber erst, wenn ich das uri_unescape
zweifach ausführe.
use URI::Escape;
$ENV{'QUERY_STRING'} = "DATA=%253cALT+TYPE%253d%2522Auto%2522+SIG%253d%2522(vvv)%2522+SBSY%253d%2522(233)%2522+NOID%253d%252250%2522+SUM%253d%2522p322b%2522+MID%253d%252234-155%2522+PAS%253d%252299%2522+NAME%253d%2522REW+Q%252bT+MOSS%2522+METHOD%253d%25222%2522+IDO%253d%2522904%2522+KRI%253d%2522100%2522+WARW%253d%2522EER%2522+IP%253d%2522128.0.0.1%2522+IPC%253d%2522DE%2522+CCCO%253d%2522AF%2522+%252f%253e";
my $klartext = $ENV{'QUERY_STRING'};
print "Ausgabe des Strings ohne uri_unescape: " . $klartext . "\n"; #
$klartext = uri_unescape($klartext);
print "Ausgabe des Strings mit einem uri_unescape: " . $klartext . "\n";
$klartext = uri_unescape(uri_unescape($klartext));
print "Ausgabe des Strings mit zweifachen uri_unescape: " . $klartext . "\n";
# Ich habe noch mal ein dreifaches uri_unescape mit reingenommen, aber dieses ändert am Ergebnis nichts mehr.
$klartext = uri_unescape(uri_unescape(uri_unescape($klartext)));
print "Ausgabe des Strings mit dreifachen uri_unescape: " . $klartext . "\n";
Ich verstehe nicht, wie das sein kann.
Und auch nicht, warum ein einfaches uri_unescape
nicht sofort alles dekodiert.
Was habe ich da übersehen?
Danke Simon