这似乎已经以某种形式或方式永远被打破了。
第 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);
现在真正令人讨厌的部分是在三星 Galaxy S II (4.0.3) 上 loadData() 工作得很好,但在 Galaxy Nexus (4.0.2) 上测试多字节字符会出现乱码,除非你使用 loadDataWithBaseURL( )。Web 视图文档
最新版本的 Android
一些报告要求mimeType
包含的 loadData 调用的行为发生了变化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 仍然没有解决这个基本问题。