WebView.loadData () hiç düzgün çalışmıyor. Yapmam gereken şey şuydu:
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header+myHtmlString, "text/html", "UTF-8");
Sanırım sizin durumunuzda UTF-8'i hem başlıkta hem de WebView.loadData () içinde latin1 veya ISO-8859-1 ile değiştirmelisiniz.
Ve tam bir cevap vermek için, işte kodlamaların resmi listesi: http://www.iana.org/assignments/character-sets
Cevabımı daha kapsayıcı olacak şekilde güncelliyorum:
Kullanmak için WebView.loadData () kodlamak html içeriğe sahip olmayan latin1 kodlamaları ile. Önceki örnek Android 4 + 'da düzgün çalışmıyordu, bu yüzden aşağıdaki gibi görünecek şekilde değiştirdim:
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);
}
Ancak daha sonra WebView.loadDataWithBaseURL () ' ye geçtim ve kod çok temiz hale geldi ve Android sürümüne bağlı değil:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
myWebView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
Bazı nedenlerden dolayı bu işlevler tamamen farklı bir uygulamaya sahiptir.