Это, кажется, было сломано в некоторой форме или моде навсегда. Выпуск 1733
Использование loadDataWithBaseURL вместо 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);
Теперь действительно раздражает то, что в Samsung Galaxy S II (4.0.3) loadData() работает отлично, но при тестировании на Galaxy Nexus (4.0.2) многобайтовые символы искажаются, если вы не используете loadDataWithBaseURL (). Документация WebView
Последние версии Android
Некоторые сообщают об изменении в поведении вызовов loadData, требующих mimeType
для включения charset=utf-8
.
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");
Вы также можете использовать эту формулировку с 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);
Удивительно, что Android до сих пор не решил эту основную проблему.