2

我将在 EditText 中获取文本,然后在 WebView 中显示文本。以下代码适用于 ASCII 字符。对于非 ASCII 字符,WebView 中的文本变为乱码。

String input = mEditText.getText().toString();
String html = makeHTML(input); // append HTML elements and headers including MIME and ENCODING header
mWebView.loadData(html, "text/html", "utf-8");

我以为我的 HTML 做错了什么,所以我尝试直接在 WebView 中显示文本而不修改文本。然而,结果是一样的。

String input = mEditText.getText().toString();
mWebView.loadData(input, "text/html", "utf-8");

其中在 EditTextmakeText()Toast显示非 ASCII 文本没有任何问题。

有人知道答案吗?

4

2 回答 2

1

WebView 可能无法加载某些“不安全”的 HTML 字符。尝试使用:

String input = mEditText.getText().toString();
String html = makeHTML(input);
String encodedHtml = URLEncoder.encode(html,"UTF-8");
mWebView.loadData(encodedHtml, "text/html", "utf-8"); 

URLEncoder.decode(encodedHtml,"UTF-8") 方法也可能有用。

于 2012-07-25T03:40:47.817 回答
1

最后,我通过使用解决了这个loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl)问题WebView

mWebView.loadData(data, mimeType, encoding)

mWebView.loadDataWithBaseURL("", data, mimeType, encoding, "")

似乎相同,但实际上并非如此。

就我而言,loadData()未能正确编码字符并且无法加载保存在asset文件夹中的图像。

于 2012-07-25T10:24:37.047 回答