Ini memungkinkan untuk menggunakan metode berikut untuk setelan konten dari tampilan web loadData (Data string, Jenis mimeTipe, Pengodean string)
Bagaimana menangani masalah dengan pengkodean data html yang tidak diketahui ?!
Apakah ada daftar pengkodean ?!
Saya tahu dari kampus saya bahwa dalam kasus saya html berasal dari DB dan dikodekan dengan latin-1. Saya mencoba mengatur parameter encoding ke latin-1, ke ISO-8859-1 / iso-8859-1, tetapi masih bermasalah dengan tampilan tanda khusus seperti ä, ö, ü.
Saya akan sangat berterima kasih atas saran apa pun.
WebView.loadDataWithBaseURL()
WebView.loadData () sama sekali tidak berfungsi dengan baik. Yang harus saya lakukan adalah:
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:
Tapi kemudian saya beralih ke WebView.loadDataWithBaseURL () dan kodenya menjadi sangat bersih dan tidak tergantung pada versi Android:
Untuk beberapa alasan fungsi ini memiliki implementasi yang sangat berbeda.
sumber
Seperti yang saya pahami,
loadData()
cukup buatdata:
URL dengan data yang disediakan.Baca javadocs untuk
loadData()
:Oleh karena itu, Anda harus menggunakan US-ASCII dan melepaskan diri dari karakter khusus apa pun, atau cukup menyandikan semuanya menggunakan Base64. Berikut ini seharusnya berfungsi, dengan asumsi Anda menggunakan UTF-8 (Saya belum menguji ini dengan latin1):
sumber
Saya punya masalah ini, tapi:
tidak berfungsi di semua perangkat. Dan saya menggabungkan beberapa metode:
Berhasil.
sumber
gunakan ini: String customHtml = text;
sumber
sumber
Cara paling aman untuk memuat htmlContent dalam tampilan Web adalah:
"Pengkodean Base64" adalah rekomendasi resmi yang telah ditulis lagi (sudah ada di Javadoc) di bug 01/2019 terbaru di Chrominium (hadir di WebView M72 (72.0.3626.76)):
https://bugs.chromium.org/p/chromium/issues/detail?id=929083
Pernyataan resmi dari tim Chromium:
"Perbaikan yang disarankan:
Tim kami menyarankan Anda mengenkode data dengan Base64. Kami telah memberikan contoh cara melakukannya:
Perbaikan ini kompatibel dengan versi sebelumnya (berfungsi pada versi WebView sebelumnya), dan juga harus tahan masa depan (Anda tidak akan mengalami masalah kompatibilitas di masa mendatang sehubungan dengan pengkodean konten). "
Contoh kode:
sumber
jawaban di atas tidak berfungsi dalam kasus saya. Anda perlu menentukan utf-8 di tag meta
sumber
webview.loadDataWithBaseURL (null, teks, "teks / html", "UTF-8", null);
sumber