WebView.loadData () funktioniert überhaupt nicht richtig. Was ich tun musste war:
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header+myHtmlString, "text/html", "UTF-8");
Ich denke in Ihrem Fall sollten Sie UTF-8 sowohl im Header als auch in WebView.loadData () durch latin1 oder ISO-8859-1 ersetzen.
Um eine vollständige Antwort zu geben, finden Sie hier die offizielle Liste der Codierungen: http://www.iana.org/assignments/character-sets
Ich aktualisiere meine Antwort, um umfassender zu sein:
Um WebView.loadData () mit Nicht-Latin1-Codierungen zu verwenden, müssen Sie HTML-Inhalte codieren. Das vorherige Beispiel funktionierte in Android 4+ nicht richtig, daher habe ich es so geändert, dass es wie folgt aussieht:
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);
}
Aber später habe ich zu WebView.loadDataWithBaseURL () gewechselt und der Code wurde sehr sauber und nicht abhängig von der Android-Version:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
myWebView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
Aus irgendeinem Grund haben diese Funktionen eine völlig andere Implementierung.