Comment pouvons-nous encoder une chaîne en utilisant la norme URL (RFC 1738) en C #?
L'outil en ligne suivant convertit les chaînes en utilisant cette norme http://www.freeformatter.com/url-encoder.html
Un exemple de la chaîne que je veux convertir est test(brackets)
et la chaîne encodée devrait ressembler à:
test%28brackets%29
Selon RFC 1738 :
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.
Ni HttpUtility.UrlEncode
ni WebUtility.UrlEncode
codera ces caractères puisque la norme indique les parenthèses ()
peut être utilisé non codé.
Je ne sais pas pourquoi le RL Encoder/Decoder que vous avez lié les encode car il les répertorie également en tant que caractère pouvant être utilisé dans une URL.
Uri.EscapeDataString
fait ce que vous voulez. Voir MSDN .
Uri.EscapeDataString
convertira la chaîne en utilisant les standards Uri, ce qui n'est pas conforme à la RFC 1738.
RFC 1738 est une ancienne norme URL.
Je l'ai accompli en utilisant FormUrlEncodedContent
:
data = new List<KeyValuePair<string, string>>();
data.Add(new KeyValuePair<string, string>("key", "value"));
var payloadBody = await new FormUrlEncodedContent(data).ReadAsStringAsync();
Si vous n'avez pas besoin d'un corps d'URL codé , vous devez probablement tromper avec la clé/valeur f.e. laissez la valeur vide.