TsCyrille Posté(e) 28 juillet 2010 Share Posté(e) 28 juillet 2010 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 More sharing options...
akex Posté(e) 28 juillet 2010 Share Posté(e) 28 juillet 2010 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 More sharing options...
TsCyrille Posté(e) 28 juillet 2010 Auteur Share Posté(e) 28 juillet 2010 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 More sharing options...
TsCyrille Posté(e) 3 août 2010 Auteur Share Posté(e) 3 août 2010 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 More sharing options...
akex Posté(e) 3 août 2010 Share Posté(e) 3 août 2010 C'était l'idée. Désolé je n'avais pas vu ta réponse. Ravi que tu ais pu trouver comment faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.