我有一个webview,我正在尝试将简单的UTF-8文本加载到其中.
mWebView.loadData("?????????????", "text/html", "UTF-8");
但WebView显示ANSI/ASCII垃圾.
显然是编码问题,但在告诉webview显示Unicode文本时我缺少什么?
这是一个HelloWorld应用程序.
使用:
mWebView.loadDataWithBaseURL(null, "?????????????", "text/html", "utf-8", null);
或者使用带有setDefaultTextEncoding的 WebSettings :
WebSettings settings = mWebView.getSettings(); settings.setDefaultTextEncodingName("utf-8");
WebView mWebView = (WebView) findViewById(R.id.myWebView); WebSettings settings = mWebView.getSettings(); settings.setDefaultTextEncodingName("utf-8"); mWebView.loadData(myCharacters, "text/html; charset=utf-8",null);
要么
mWebView.loadData(myCharacters, "text/html; charset=utf-8","UTF-8");
这似乎永远以某种形式或方式被打破. 问题1733
// 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( ).WebView文档
有些人报告需要mimeType
包含的loadData调用的行为发生了变化charset=utf-8
.
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");
我第一次看到这个时,我的老板给我带了他的电话,早期的Nexus,当时我正在开发三星Galaxy II,它出现在我的经济新闻源上,他的手机上有很多非ASCII字符.因此,这不仅是Android中的长期问题,而且设备制造商之间也不一致.这是你必须在防守方面进行编程的问题.