安卓 WebView 出现乱码通常和编码(charset)识别错误或字体/渲染环境有关。下面按常见原因 → 解决办法给你梳理一下。
如果网页里没有声明编码,WebView 可能默认当成 ISO-8859-1,中文就乱码。
✅ 解决:在 <head> 中最前面加:
<meta charset="UTF-8">
或老写法:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
⚠️ 注意:meta 必须放在 <head> 最前面,太靠后可能不生效。
比如:
UTF-8Content-Type: text/html; charset=GBK✅ 解决:
Content-Type: text/html; charset=utf-8
有些老系统或定制 ROM 会默认非 UTF-8。
✅ Java 中设置:
webView.getSettings().setDefaultTextEncodingName("UTF-8");
如果是 loadData:
webView.loadData(data, "text/html; charset=UTF-8", "UTF-8");
❌ 错误写法(容易乱码):
webView.loadData(html, "text/html", null);
webView.loadData(htmlString, "text/html; charset=utf-8", "utf-8");
✅ 推荐用:
webView.loadDataWithBaseURL(
null,
htmlString,
"text/html",
"UTF-8",
null
);
✅ 解决:
如果页面是 JS 动态生成的,但:
也会导致“看起来像乱码”。
✅ 检查:
webView.getSettings().setJavaScriptEnabled(true);
你可以按顺序排查:
<meta charset="UTF-8">loadData 且没指定 UTF-8setDefaultTextEncodingName如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。