WebView.loadData () ne fonctionne pas du tout correctement. Ce que j'avais à faire était:
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header+myHtmlString, "text/html", "UTF-8");
Je pense que dans votre cas, vous devriez remplacer UTF-8 par latin1 ou ISO-8859-1 à la fois dans l'en-tête et dans WebView.loadData ().
Et, pour donner une réponse complète, voici la liste officielle des encodages: http://www.iana.org/assignments/character-sets
Je mets à jour ma réponse pour être plus inclusive:
Pour utiliser WebView.loadData () avec des encodages non latin1, vous devez encoder le contenu html. L'exemple précédent ne fonctionnait pas correctement sous Android 4+, je l'ai donc modifié pour ressembler à ceci:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
String base64 = Base64.encodeToString(htmlString.getBytes(), Base64.DEFAULT);
myWebView.loadData(base64, "text/html; charset=utf-8", "base64");
} else {
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header + htmlString, "text/html; charset=UTF-8", null);
}
Mais plus tard, je suis passé à WebView.loadDataWithBaseURL () et le code est devenu très propre et ne dépend pas de la version d'Android:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
myWebView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
Pour une raison quelconque, ces fonctions ont une implémentation complètement différente.