elw*_*wis 73 android utf webview
我在我的Android应用程序中使用了一些webview,但无法使它们以utf-8编码显示.
如果使用这个我不会看到我的斯堪的纳维亚字符:
mWebView.loadUrl("file:///android_asset/om.html")
Run Code Online (Sandbox Code Playgroud)
如果尝试这个,我根本不会显示任何东西
mWebView.loadDataWithBaseURL("file:///android_asset/om.html", null, "text/html", "utf-8",null);
Run Code Online (Sandbox Code Playgroud)
问候
Eri*_*vik 150
您可以在加载数据之前尝试编辑webview的设置:
WebSettings settings = mWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
Run Code Online (Sandbox Code Playgroud)
另外,如下面的评论中所提供的,请务必添加"charset=utf-8"到loadData调用:
mWebView.loadData(getString(R.string.info_texto), "text/html; charset=utf-8", "utf-8");
Run Code Online (Sandbox Code Playgroud)
Cam*_*mer 126
这似乎永远以某种形式或方式被打破. 问题1733
使用loadDataWithBaseURL而不是loadData.
// Pretend this is an html document with those three characters
String scandinavianCharacters = "øæå";
// Won't render correctly
webView.loadData(scandinavianCharacters, "text/html", "UTF-8");
// Will render correctly
webView.loadDataWithBaseURL(null, scandinavianCharacters, "text/html", "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)
现在真正烦人的部分是在三星Galaxy S II(4.0.3)上loadData()工作正常,但在Galaxy Nexus(4.0.2)上测试多字节字符是乱码,除非你使用loadDataWithBaseURL( ).WebView文档
有些人报告需要mimeType包含的loadData调用的行为发生了变化charset=utf-8.
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
您也可以使用此配方 WebSettings
WebView webView = (WebView) findViewById(R.id.DemoWebView);
WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("utf-8");
webView.loadData(scandinavianCharacters, "text/html; charset=utf-8", null);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,Android仍然没有解决这个基本问题.
R E*_*ris 27
Derzu的位在上面非常有帮助:
webview.loadData(getString(R.string.info_texto), "text/html; charset=utf-8", "utf-8");
Run Code Online (Sandbox Code Playgroud)
我在Adroid 2.x上使用utf-8并在4.x上乱码ansi,直到我放入
charset=utf-8
Run Code Online (Sandbox Code Playgroud)
在wv.loadUrlWhatever()调用中.Derzu非常注重细节
Aar*_*n D 12
HTTP服务器提供的HTML页面有两种方式可以指定内容编码.通常,服务器将在HTTP标头中指定内容编码,但由于此页面是从文件加载的,因此没有HTTP事务,因此没有标头.因此,WebView假定使用Latin-1的默认编码.
但是,您可以使用<meta>标记指定内容编码.这样构造你的html文件:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Title</title>
</head>
Your content following
Run Code Online (Sandbox Code Playgroud)
然后使用将其加载到WebView中mWebView.loadUrl("file:///android_asset/om.html");.它应该显示您期望的非拉丁字符.
小智 9
WebView wv = (WebView) findViewById(R.id.rowWebview);
WebSettings settings = wv.getSettings();
settings.setDefaultTextEncodingName("utf-8");
wv.loadData(topHtml, "text/html; charset=utf-8",null);
Run Code Online (Sandbox Code Playgroud)
这两者的组合似乎对我有用.出于某种原因,它喜欢编码上的null和mime类型中的charset:/很奇怪.这已经解决了我几个月的恶化.