Es ist möglich, die folgende Methode zum Einstellen von LoadData in der Webansicht zu verwenden (String-Daten, String-MimeType, String-Codierung).
Wie gehe ich mit dem Problem mit der unbekannten Codierung von HTML-Daten um?!
Gibt es eine Liste von Codierungen?!
Ich weiß von meinem College, dass HTML in meinem Fall von DB stammt und mit Latin-1 codiert ist. Ich versuche, den Codierungsparameter auf Latin-1, ISO-8859-1 / ISO-8859-1 zu setzen, habe aber immer noch Probleme mit der Anzeige von Sonderzeichen wie ä, ö, ü.
Ich bin für jeden Rat sehr dankbar.
WebView.loadDataWithBaseURL()
WebView.loadData () funktioniert überhaupt nicht richtig. Was ich tun musste war:
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:
Aber später habe ich zu WebView.loadDataWithBaseURL () gewechselt und der Code wurde sehr sauber und nicht abhängig von der Android-Version:
Aus irgendeinem Grund haben diese Funktionen eine völlig andere Implementierung.
quelle
Soweit ich weiß, wird
loadData()
einfach einedata:
URL mit den bereitgestellten Daten generiert .Lesen Sie die Javadocs für
loadData()
:Daher sollten Sie entweder US-ASCII verwenden und Sonderzeichen selbst maskieren oder einfach alles mit Base64 codieren. Folgendes sollte funktionieren, vorausgesetzt, Sie verwenden UTF-8 (ich habe dies nicht mit latin1 getestet):
quelle
Ich habe dieses Problem, aber:
funktioniert nicht auf allen Geräten. Und ich füge einige Methoden zusammen:
Es klappt.
quelle
Verwenden Sie dies: String customHtml = text;
quelle
quelle
Der sicherste Weg, htmlContent in eine Webansicht zu laden, ist:
"Base64-Codierung" ist eine offizielle Empfehlung, die im letzten 01/2019-Fehler in Chrominium (in WebView M72 (72.0.3626.76)) erneut geschrieben wurde (bereits in Javadoc vorhanden):
https://bugs.chromium.org/p/chromium/issues/detail?id=929083
Offizielle Erklärung des Chromium-Teams:
"Empfohlener Fix:
Unser Team empfiehlt, dass Sie Daten mit Base64 codieren. Wir haben Beispiele dafür bereitgestellt:
Dieser Fix ist abwärtskompatibel (funktioniert mit früheren WebView-Versionen) und sollte auch zukunftssicher sein (zukünftige Kompatibilitätsprobleme in Bezug auf die Inhaltscodierung treten nicht auf). "
Codebeispiel:
quelle
Die obigen Antworten funktionieren in meinem Fall nicht. Sie müssen utf-8 im Meta-Tag angeben
quelle
webview.loadDataWithBaseURL (null, text, "text / html", "UTF-8", null);
quelle