Android WebView错误地处理预格式化文本中的换行符

Axa*_*dax 15 html android webkit webview

如果我将此HTML推送到WebView:

webView.loadData("<html><body><pre>line 1\nline 2</pre></body></html>", "text/html", "utf-8");
Run Code Online (Sandbox Code Playgroud)

它呈现为(在模拟器中,也在设备上)

line 1line 2
Run Code Online (Sandbox Code Playgroud)

而不是

line 1
line 2
Run Code Online (Sandbox Code Playgroud)

正如我所料.如果我将此HTML保存到SD卡并在浏览器中打开该文件,它会呈现正常.我想我做错了什么,或者这可能是一个错误.无论如何,我想以编程方式将带有预先格式化的换行符的HTML推送到一个WebView并呈现换行符.

小智 20

传递给的字符串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);
}
Run Code Online (Sandbox Code Playgroud)


Jig*_*wda 11

试试这个:

webView.loadDataWithBaseURL(...)
Run Code Online (Sandbox Code Playgroud)

更多信息在这里

  • 简单而有效!示例调用:`webView.loadDataWithBaseURL(null,html,"text/html","UTF-8",null);` (3认同)