C'est relativement simple dans le cas particulier, mais assez délicat dans le cas général.
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://stackoverflow.com/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.getContentMimeType(entity));
System.out.println(EntityUtils.getContentCharSet(entity));
La réponse dépend de la Content-Type
En-tête de réponse HTTP .
Cet en-tête contient des informations sur la charge utile et sur pourrait définir l'encodage des données textuelles. Même si vous supposez types de texte vous devrez peut-être inspecter le contenu lui-même afin de déterminer le codage correct des caractères. Voir, par exemple, le Spécification HTML 4 pour plus de détails sur la façon de procéder pour ce format particulier.
Une fois que l'encodage est connu, un InputStreamReader peut être utilisé pour décoder les données.
Cette réponse dépend du bon fonctionnement du serveur. Si vous voulez gérer les cas où les en-têtes de réponse ne correspondent pas au document, ou si les déclarations du document ne correspondent pas à l'encodage utilisé, c'est une autre paire de manches.
1 votes
Puisque la question et toutes les réponses semblent concerner les bibliothèques d'Apache, il convient d'étiqueter cette question comme telle. Je ne vois rien sans l'utilisation de librairies tierces.
0 votes
Liés : stackoverflow.com/questions/21574478