2012-07-25 28 views
2

我将在EditText中获取文本,然后在WebView中显示文本。以下代码适用于ASCII字符。对于非ASCII字符,WebView中的文本变成垃圾字符。来自Android EditText的文本在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"); 

Toast,其显示在的EditText非ASCII文本没有任何问题的makeText()

有谁知道答案?

+0

非ASCII字符,你可以给一个或两个字符进行测试。 – rajpara 2012-07-25 02:47:43

+0

日本“新闻”和中文“你好” – Sergio 2012-07-25 06:03:30

+0

我会建议你检查https://github.com/mayooresan/Japs-Attack-Ceylon--Android-App这个项目在webview中包含自定义字体。其他方式我不知道。 – rajpara 2012-07-25 06:11:06

回答

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”)方法也可能有用。

+0

'URLEncoder'的encode()'在我的情况下不起作用... :( – Sergio 2012-07-25 06:05:37

+0

看起来像是一个已知的bug。参见http://code.google.com/p/android/issues/detail?id= 1733获取更多信息和解决方法,您可以根据自己的情况进行修改。祝您好运! – 2012-07-25 06:14:56

1

最后,我用loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl)WebView

mWebView.loadData(data, mimeType, encoding) 

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

似乎是相同的解决这个问题,但实际上并非如此。

在我的情况下,loadData()无法正确编码字符,并且无法加载保存在asset文件夹中的图像。