Cela semble avoir été brisé sous une forme ou une autre depuis toujours. Numéro 1733
Utilisez loadDataWithBaseURL au lieu de loadData.
// Pretend this is an html document with those three characters
String scandinavianCharacters = "øæå";
// Won't render correctly
webView.loadData(scandinavianCharacters, "text/html", "UTF-8");
// Will render correctly
webView.loadDataWithBaseURL(null, scandinavianCharacters, "text/html", "UTF-8", null);
Ce qui est vraiment ennuyeux, c'est que sur le Samsung Galaxy S II (4.0.3), loadData() fonctionne parfaitement, mais que lors des tests sur le Galaxy Nexus (4.0.2), les caractères à plusieurs octets sont brouillés, sauf si vous utilisez loadDataWithBaseURL(). Documentation sur le WebView
Versions récentes d'Android
Certains signalent un changement dans le comportement des appels loadData nécessitant l'utilisation de l'outil de gestion des données. mimeType
d'inclure charset=utf-8
.
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");
Vous pouvez également utiliser cette formule avec WebSettings
WebView webView = (WebView) findViewById(R.id.DemoWebView);
WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("utf-8");
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", null);
Il est étonnant qu'Android n'ait toujours pas résolu ce problème de base.
1 votes
Bien qu'il s'agisse d'un doublon de Android-webview-utf-8-not-show la solution acceptée en 2010 ne fonctionne pas avec les nouvelles versions d'Android. Les réponses de @ Cameron Lowell Palmer et @R Earle Harris à cette question contiennent des informations qui fonctionnent pour les nouvelles versions d'Android.
0 votes
Exactement, c'est similaire, mais ce n'est pas un doublon et cela représente une question et une réponse générale plus forte. Veuillez voter pour la réouverture.
0 votes
Elena sys Il semble que votre réponse à cette question soit quelque peu intéressée. Les réponses ici sont mieux notées que votre réponse, précisément parce que la question était suffisamment différente et les réponses plus fortes.
0 votes
Il s'agit d'une question dupliquée de : stackoverflow.com/questions/3312643/
0 votes
@Elenasys ne sont pas d'accord. Il est similaire, mais suffisamment différent.