Voici ma solution:
cat = [email protected]@(ToString/@{##})&; (* Like sprintf/strout in C/C++. *)
re = RegularExpression;
hex = IntegerString[#,16]&; (* integer to hex, represented as a string *)
up = ToUpperCase;
asc = ToCharacterCode[#][[1]]&; (* character to ascii code *)
subst = StringReplace;
urlesc[s_String] := subst[s, {" "->"+", [email protected]"[^\w\_\:\.]":>"%"<>[email protected]@[email protected]"$0"}]
urlesc[x_] := [email protected]@x
unesc[s_String] := subst[s, [email protected]"\\%(..)":>[email protected]["$1",16]]
En bonus, voici une fonction pour encoder une liste de règles comme {a->2, b->3}
en paramètres GET comme a=2&b=3
, avec l'URL-encodage approprié:
encode[c_] := cat @@ Riffle[cat[#1, "=", urlesc[#2]]& @@@ c, "&"]
Favori. C'est quelque chose que je veux faire une fois tous les six mois, et je finis toujours par relancer quelque chose pour faire le travail. – Pillsy