1)使用WebView.loadDataWithBaseURL,它的行为与WebView.loadData不同(更好)
2)尝试用其他方法替换“UTF-8”编码,例如: US-ASCII。最好是确定您尝试显示的文本中实际使用的编码。
这段代码对我有用。
String base64EncodedString = null; try { base64EncodedString = android.util.Base64.encodeToString((preString+mailContent.getBody()+postString).getBytes("UTF-8"), android.util.Base64.DEFAULT); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if(base64EncodedString != null) { wvMailContent.loadData(base64EncodedString, "text/html; charset=utf-8", "base64"); } else { wvMailContent.loadData(preString+mailContent.getBody()+postString, "text/html; charset=utf-8", "utf-8"); }
我在WebView.loadData上使用“text / html; charset = utf-8”作为MIME类型修复了我的问题
编辑: 感谢AndyD的评论。不幸的是,这个提示并不适用于每个设备(我认为这取决于使用的webkit版本)。运用 WebView.html#loadDataWithBaseURL 适用于每个(已测试)设备。
我过去也遇到过同样的问题 WebView.loadData() MIME类型“text / html; charset = utf-8”对我不起作用。但唯一的问题是我没有设置 “meta http-equiv =”Content-Type“content =”text / html;字符集= UTF-8" 在我的测试HTML中。
根据您的原始代码,您可以使用两个选项:
运用 loadDataWithBaseURL() :
loadDataWithBaseURL()
wv.loadDataWithBaseURL(null, strContent, "text/html", "UTF-8", null);
或使用 loadData() :
loadData()
wv.loadData(strContent, "text/html; charset=utf-8", "UTF-8");
content.loadData(htmlsource, "text/html; charset=utf-8", null);
它对我有用:)