使用WebView的loadData编码问题

jul*_*jul 21 encoding android webview

我正在使用WebView加载一些包含latin-1字符的数据

String uri = Uri.encode(html);
webview.loadData(uri, "text/html", "ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)

显示时,latin1字符将被奇怪的字符替换.

如果我直接在TextView中加载html(只是为了测试),就会正确显示拉丁字符.

有人可以帮忙吗?

谢谢

HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <!-- some html -->

</html>
Run Code Online (Sandbox Code Playgroud)

pat*_*ryk 52

myWebView.loadData(myHtmlString, "text/html; charset=UTF-8", null);
Run Code Online (Sandbox Code Playgroud)

这完美的作品,尤其是在Android 4.0,这显然忽略了字符编码的HTML.

测试2.3和4.0.3.

事实上,我不知道除了"base64"之外的其他值是什么.一些Google示例在那里放置了null.

您应该始终使用UTF-8编码.所有其他字符编码已经过时多年已经过时.


jul*_*jul 34

只有这样,才能有工作,作为评论在这里:

webview.loadDataWithBaseURL("fake://not/needed", html, "text/html", "utf-8", "");
Run Code Online (Sandbox Code Playgroud)

没有URI编码,utf-8 ... loadData错误?


Gök*_*ren 14

String start = "<html><head><meta http-equiv='Content-Type' content='text/html' charset='UTF-8' /></head><body>";
String end = "</body></html>";

webcontent.loadData(start+ YOURCONTENT + end, "text/html; charset=UTF-8", null);
Run Code Online (Sandbox Code Playgroud)

解决问题之一.


Pri*_*hah 7

我显示©2011,它显示©.

使用以下代码,我已经实现了正确的显示值©2011

webViewContent.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
Run Code Online (Sandbox Code Playgroud)