【发布时间】:2019-12-03 12:44:24
【问题描述】:
我有一个应用程序,它使用WebView 向用户显示一些本地 html。该应用程序在过去 2 年运行良好,但最近我收到太多报告说该应用程序显示某种错误,如下所示:
"Web page not available The web page at data:text/html; charset=utf-8;charset=utf-8;base64, could not be loaded because: net::ERR_INVALID_RESPONSE"
显然,在 android 或 WebView 中发生了一些变化,而且确实发生了变化,doc 表示:
更严格的 UTF-8 解码器 在 Android 9 中,Java 的 UTF-8 解码器 语言更严格,遵循 Unicode 标准。
所以,我尝试使用 base64 编码加载我的数据来解决问题。
String encodedHtml = Base64.encodeToString(resource.getBytes(), Base64.NO_WRAP);
loadDataWithBaseURL(basePath, encodedHtml, "text/html; charset=utf-8", "base64", null);
但是这个方法只打印原始的 base64 字符串。所以我尝试了这个:
loadData(encodedHtml, "text/html; charset=utf-8", "base64");
它显示html没有任何问题。
但是,我需要使用loadDataWithBaseURL,以便我可以对 html 进行后期处理,例如。加载css、字体等。
那么loadData 和loadDataWithBaseURL 之间有什么区别导致其中一个显示html 而另一个显示原始base64 字符串?
【问题讨论】:
-
我也遇到了这个。你对这个问题了解更多了吗?
标签: android utf-8 base64 android-webview