TsCyrille Posted July 28, 2010 Share Posted July 28, 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 Link to comment Share on other sites More sharing options...
akex Posted July 28, 2010 Share Posted July 28, 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 ? Link to comment Share on other sites More sharing options...
TsCyrille Posted July 28, 2010 Author Share Posted July 28, 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 ? Link to comment Share on other sites More sharing options...
TsCyrille Posted August 3, 2010 Author Share Posted August 3, 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... Link to comment Share on other sites More sharing options...
akex Posted August 3, 2010 Share Posted August 3, 2010 C'était l'idée. Désolé je n'avais pas vu ta réponse. Ravi que tu ais pu trouver comment faire. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.