La valeur retournée par URLConnection.getContentEncoding()
renvoie la valeur de tête Content-Encoding
code de URLConnection.getContentEncoding()
/**
* Returns the value of the <code>content-encoding</code> header field.
*
* @return the content encoding of the resource that the URL references,
* or <code>null</code> if not known.
* @see java.net.URLConnection#getHeaderField(java.lang.String)
*/
public String getContentEncoding() {
return getHeaderField("content-encoding");
}
Au lieu de cela, plutôt faire un connection.getContentType()
pour récupérer le type de contenu et récupérer le charset du Content-Type . J'ai inclus un exemple de code sur la façon de le faire ....
String contentType = connection.getContentType();
String[] values = contentType.split(";"); // values.length should be 2
String charset = "";
for (String value : values) {
value = value.trim();
if (value.toLowerCase().startsWith("charset=")) {
charset = value.substring("charset=".length());
}
}
if ("".equals(charset)) {
charset = "UTF-8"; //Assumption
}
ce fil connexe pourrait aider quelqu'un d'autre: http://stackoverflow.com/questions/9112259/obtaining-response-charset-of-response -t-get-or-post-request – Spoonface
Il y a aussi une bonne raison connection.getContentEncoding() renvoie null: il retourne le champ "Content-encoding" de l'en-tête http, qui ** n'est pas supposé vous donner un jeu de caractères. Il devrait être utilisé par exemple si les données reçues sont compressées et vous donne le moyen d'utiliser pour transformer les données afin que vous puissiez les lire. https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11 – jdarthenay