Esto parece haberse roto de alguna forma para siempre.
Edición 1733
Utilice loadDataWithBaseURL en lugar de loadData.
String scandinavianCharacters = "øæå";
webView.loadData(scandinavianCharacters, "text/html", "UTF-8");
webView.loadDataWithBaseURL(null, scandinavianCharacters, "text/html", "UTF-8", null);
Ahora, la parte que es realmente molesta es que en el Samsung Galaxy S II (4.0.3) loadData () funciona bien, pero las pruebas en el Galaxy Nexus (4.0.2) los caracteres multibyte se distorsionan a menos que use loadDataWithBaseURL ( ). Documentación de WebView
Versiones recientes de Android
Algunos informan un cambio en el comportamiento de las llamadas loadData que requieren mimeType
que se incluya charset=utf-8
.
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");
También puede utilizar esta formulación con 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);
Es sorprendente que Android todavía no haya resuelto este problema básico.