WebView.loadData () sama sekali tidak berfungsi dengan baik. Yang harus saya lakukan adalah:
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header+myHtmlString, "text/html", "UTF-8");
Saya pikir dalam kasus Anda, Anda harus mengganti UTF-8 dengan latin1 atau ISO-8859-1 baik di header dan di WebView.loadData ().
Dan, untuk memberikan jawaban lengkap, berikut adalah daftar resmi pengkodean: http://www.iana.org/assignments/character-sets
Saya memperbarui jawaban saya agar lebih inklusif:
Untuk menggunakan WebView.loadData () dengan penyandiaksaraan non latin1 Anda harus menyandikan konten html. Contoh sebelumnya tidak berfungsi dengan benar di Android 4+, jadi saya telah memodifikasinya agar terlihat seperti berikut:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
String base64 = Base64.encodeToString(htmlString.getBytes(), Base64.DEFAULT);
myWebView.loadData(base64, "text/html; charset=utf-8", "base64");
} else {
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header + htmlString, "text/html; charset=UTF-8", null);
}
Tapi kemudian saya beralih ke WebView.loadDataWithBaseURL () dan kodenya menjadi sangat bersih dan tidak tergantung pada versi Android:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
myWebView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
Untuk beberapa alasan fungsi ini memiliki implementasi yang sangat berbeda.