[WP7] HttpWebRequest et problèmes d’encodage

Introduction

Lorsque vous réalisez une HttpWebRequest en Windows Phone 7, vous risquez d’avoir une réponse dans un encodage différent d’UTF8. Ce qui peut entrainer des caractères illisibles à la place des lettres accentuées (ex : “?” au lieu de “é”).

Pour remédier à cela, on va réencoder notre chaîne grâce à la classe System.Text.Encoding.

Explication par le code

String resultString;
HttpWebResponse response = 
      (HttpWebResponse)request.EndGetResponse(result);
//On définit l'encodage de base de notre chaîne
var source = Encoding.GetEncoding("iso-8859-1");
//On définit l'encodage de de destination
var dest = Encoding.UTF8;

/*Lors de la création de notre StreamReader, 
* on précise l'encodage de départ*/
using (StreamReader streamReader1 =
      new StreamReader(response.GetResponseStream(),
          source))
{
      resultString = streamReader1.ReadToEnd();
 }
 if (!String.IsNullOrEmpty(resultString))
{                    
      /*On récupère notre chaîne sous forme d'un tableau 
      de bytes*/
      byte[] sourceBytes = source.GetBytes(resultString);
      //On convertit notre tableau dans l'encodage souhaité
      byte[] destBytes = Encoding.Convert(source,
         dest, sourceBytes);
      //Et on reforme notre chaîne de caractère
      resultString = Encoding.UTF8.GetString(destBytes, 0,
         destBytes.Length);
 }

En résumé :

  • On créé un StreamReader avec l’encodage de base
  • On transforme la chaîne récupérée en tableau de bytes
  • On convertit ce tableau de bytes dans l’encodage souhaité
  • On le retransforme en String

Par JC VASSELON

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s