[RESOLU][.NET][C#] Encodage d'URL

Heyo,

Voilà j’ai un problème avec mes URL. J’utilise HttpWebRequest pour envoyer des requêtes HTTP, et j’ai parfois des paramètres qui comportent des accents. Le problème c’est que quand l’URL est encodée il me met par exemple des %C3%A9 pour les é alors que je voudrais des %E9, ce qui fait que je reçoit ça : é.
Et pas moyen d’encoder l’URL moi même B)

I need your help !

T’as essayé Httputility.urlencode() et Httputility.urldecode()? B)

En fait quand je veux créer ma requête il demande une URI qu’il encode tout seul, donc quand j’encode moi il me lève une exception : "URI non valide : Impossible de déterminer le format de l’URI."
Voilà ce que je fais (l’URL est totalement fantaisiste B)) :

Ben heu c’est normal, l’encoding par defaut c’est UTF8.

Ben apparemment non vu que c’est le seul encodage qui me donne ce que je veux et que c’est l’utf-8 qui me donne les %C3%A9 (ou alors j’ai mal vérifié).
De toute façon le problème c’est que je peux pas passer d’URL encodée avec la méthode Create, et je peux pas spécifier l’encodage que je veux.
Je commence à me demander si j’ai pas fait une connerie quelque part (comme utiliser HttpWebRequest par exemple ?) :confused:

Je vois pas ou est le probleme, tout se comporte exactement comme prevu. Toutes les strings en C# sont par defaut en UTF8.

Si tu veux de l’UTF8, fais de l’UTF8:

UriBuilder uribuilder = new UriBuilder("http://127.0.0.1/MaPage.aspx"); uribuilder.Query += "test=" + HttpUtility.UrlEncode("ééé", Encoding.UTF8); WebRequest webRequest = HttpWebRequest.Create(uribuilder.Uri);
Ca donnera du %C3%A9%C3%A9%C3%A9
Et du coup apres si tu fais

Ca marchera tout seul avec ééé dans s.

Enfin j’ai du mal a comprendre ou est vraiment ton probleme en fait B)

Unicode, mon cher, unicode B)

Effectivement, %E9 correspond à “é” en Latin-1 (ISO-8859-1). Donc tu n’as pas 150 possibilités :

  • Soit .net permet d’indiquer l’encoding dans lequel encoder une url, et d’après mes recherches, ce n’est pas le cas.
  • Soit tu as la main sur ton serveur, et tu peux gérer le decode() pour qu’il bosse en utf-8, et non plus un Latin-1 iso-pouic-pouic.
  • Dernière solution : tu encodes à la main en iso ton url avant de la donner à ton HttpWebRequest.

UTF ca veut dire “Unicode Transformation Format” donc unicode si tu veux. Sauf que Encoding.Unicode c’est UTF-16 little endian. Unicode est un terme tellement surchargé que c’est impossible de savoir de quoi on parle si on dit juste Unicode.

Styx31 a bien vu, je veux de l’iso-8859-1 (je viens de le découvrir en fait B)), et j’ai pas la main sur le serveur donc j’ai pas trop le choix.
Par contre je passais en paramètre de Create toute l’URL (adresse de la page et paramètres), je vais essayer de juste encoder les paramètres ce week-end.

Ca marche B)
J’ai juste encodé les valeurs des paramètres en ISO-8859-1, c’était tout con.
Merci de votre aide.