07/10/2013, 15:53
Petit ajout: il faut penser à décoder aussi les caractères valides dans une url, comme le + :
Je passe par un string::map parce que ce n'est surement pas le seul caractère qui n'est pas obligatoirement en hexa, et je transforme en code hexa par souci d'uniformisation.
tcl
proc ::urldecode {data} {
set data [::tcl::string::map { "+" "%20" } $data]
return [subst -novariables -nobackslashes [regsub -nocase -all {%([0-9a-f]{2})} $data "\[binary format H* \\1\]"]]
}
Je passe par un string::map parce que ce n'est surement pas le seul caractère qui n'est pas obligatoirement en hexa, et je transforme en code hexa par souci d'uniformisation.