From: Reimar Döffinger Date: Sat, 5 Dec 2015 16:09:38 +0000 (+0100) Subject: Make loading data into WebView more correct. X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=commitdiff_plain;h=f59c858567fece0564eed8d3563bf468672826a3 Make loading data into WebView more correct. --- diff --git a/src/com/hughes/android/dictionary/HtmlDisplayActivity.java b/src/com/hughes/android/dictionary/HtmlDisplayActivity.java index 3107da5..b99f55b 100644 --- a/src/com/hughes/android/dictionary/HtmlDisplayActivity.java +++ b/src/com/hughes/android/dictionary/HtmlDisplayActivity.java @@ -19,6 +19,7 @@ import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; +import android.util.Base64; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; @@ -26,6 +27,8 @@ import android.widget.Button; import com.hughes.util.StringUtil; +import java.io.UnsupportedEncodingException; + public final class HtmlDisplayActivity extends ActionBarActivity { static final String LOG = "QuickDic"; @@ -68,14 +71,21 @@ public final class HtmlDisplayActivity extends ActionBarActivity { actionBar.setDisplayHomeAsUpEnabled(true); final int htmlRes = getIntent().getIntExtra(HTML_RES, -1); - final String html; + String html; if (htmlRes != -1) { html = StringUtil.readToString(getResources().openRawResource(htmlRes)); } else { html = getIntent().getStringExtra(HTML); } final MyWebView webView = (MyWebView) findViewById(R.id.webView); - webView.loadData(html, "text/html", "utf-8"); + try { + // No way to get pure UTF-8 data into WebView + html = Base64.encodeToString(html.getBytes("UTF-8"), Base64.DEFAULT); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + // Use loadURL to allow specifying a charset + webView.loadUrl("data:text/html;charset=utf-8;base64," + html); webView.activity = this; final String textToHighlight = getIntent().getStringExtra(TEXT_TO_HIGHLIGHT);