如何在WebView中进行字符编码?

时间:2018-05-08 15:30:31

标签: android encoding utf-8 webview

我有一个应用程序,其中有几个WebView,每个都显示一段描述文本。几乎所有这些都有乱码,通常是单引号或双引号。

例如,一个字符串应如下所示:

  

身体'N'空间

在WebView中看起来像这样:

  

身体ÂNÂ空间

这是我第一次尝试的内容:

textWebView.loadData(getHtmlDescription(), "text/html", "UTF-8");

我最终尝试了许多解决方案,包括以下内容:

loadData

之前添加此内容
WebSettings webSettings = textWebView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");

loadData更改为loadDataWithBaseURL

WebSettings webSettings = textWebView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");
textWebView.loadDataWithBaseURL(null, getHtmlDescription(), "text/html", "UTF-8", null);

"text/html"更改为"text/html; charset=UTF-8"

WebSettings webSettings = textWebView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");
textWebView.loadDataWithBaseURL(null, getHtmlDescription(), "text/html; charset=UTF-8", "UTF-8", null);

不幸的是,这些解决方案都没有成功!

1 个答案:

答案 0 :(得分:1)

在尝试所有这些解决方案但没有成功之后,我最终试图找到并替换我能看到的所有不良角色。这太麻烦而且效率低下,但不知怎的,我偶然发现以下两线修复工作完成了所有工作!

在我的getHtmlDescription()方法中,我添加了以下两行:

description = description.replace("Â", "");
description = Html.fromHtml(description, Html.FROM_HTML_MODE_LEGACY).toString();
return description;