如果我将此HTML推送到WebView
:
webView.loadData("<html><body><pre>line 1\nline 2</pre></body></html>", "text/html", "utf-8");
它呈现为(在模拟器中,也在设备上)
line 1line 2
而不是
line 1
line 2
正如我所料,如果我将此HTML保存到SD卡并在浏览器中打开该文件,它会呈现正常。我想我做错了什么,或者这可能是一个错误。无论如何,我想以编程方式将带有预格式化换行符的HTML推送到WebView
并呈现换行符。
答案 0 :(得分:19)
传递给loadData
的字符串需要进行URI转义。
您可以使用URLEncoder.encode()
来执行此操作,但出于某种原因,WebView
不会将'+'
解码回' '
。一种解决方法是用'+'
替换所有'%20'
。
例如(并使用'+'
翻译):
try {
webview.loadData(URLEncoder.encode("<html><body><pre>line 1\nline 2</pre></body></html>", "utf-8").replaceAll("\\+", "%20"), "text/html", "utf-8");
} catch (UnsupportedEncodingException uee) {
Log.e("webview", "", uee);
}
答案 1 :(得分:11)
答案 2 :(得分:2)
您也可以使用
chapterWebView.loadDataWithBaseURL("file:///android_asset/NTImages/", message.replaceAll("\\n", "<br/>") , "text/html", "utf-8", "utf-8");