Aller au contenu

[Résolu] Problème d'accent dans mon XML


Recommended Posts

Bonjour

Je génère un XML via une page PHP : je récupère dans une String ce XML sur android via un accès HTTP. Voici comment je fais :

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost methodpost = new HttpPost(sURL);

ArrayList nameValuePairs = new ArrayList(2);
nameValuePairs.add(new BasicNameValuePair("param1","param1"));
nameValuePairs.add(new BasicNameValuePair("param2","param2"));
UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));

methodpost.addHeader("Pragma", "no-cache");
HttpResponse res = httpClient.execute(methodpost);

InputStream data = res.getEntity().getContent();

Dans l'entête de mon fichier XML, je mets :

<?xml version="1.0" encoding="ISO-8859-1"?>

Je récupère bien dans une chaine le XML généré par la page appelée.

Par contre, j'ai un souci avec les accents : j'ai des caractères chinois dans la chaine. Pourquoi ?

Si quelqu'un à une idée...

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Si tu encodes tes paramètres en utf-8 c'est que le serveur que tu interroges en a besoin non ? Donc il te renvoie nécessaire une chaine en utf-8. Je ne sais pas si c'est super avec un xml encodé en ansi ...

Et pourquoi ne pas décoder le InputStream en iso avant ?

Lien vers le commentaire
Partager sur d’autres sites

Voilà comment je lis le InputStream :

   private String generateString(InputStream stream) {
       InputStreamReader reader = new InputStreamReader(stream);
       BufferedReader buffer = new BufferedReader(reader);
       StringBuilder sb = new StringBuilder();
       try { 
           String cur;   
           while ((cur = buffer.readLine()) != null) {   
               sb.append(cur).append("\n");  
           }  
       } catch (IOException e) {  
           e.printStackTrace();  
       }
       try {
           stream.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
       return sb.toString(); 
   }

Que veux tu dire en parlant de décoder le InputStream avant ?

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé une solution : pour lire mon InputStream, j'utilise la classe InputStreamReader à laquelle j'indique le type d'encodage :

 
Charset charset = Charset.forName("ISO_8859_1");
CharsetDecoder charsetDecoder = charset.newDecoder();

InputStreamReader reader = new InputStreamReader(data, charsetDecoder);

Merci pour votre aide...

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...