WebView.loadData () взагалі не працює належним чином. Що я повинен був зробити:
String header = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
myWebView.loadData(header+myHtmlString, "text/html", "UTF-8");
Я думаю, що у вашому випадку вам слід замінити UTF-8 на latin1 або ISO-8859-1 як у заголовку, так і в WebView.loadData ().
І, щоб дати повну відповідь, ось офіційний список кодувань: http://www.iana.org/assignments/character-sets
Я оновлюю свою відповідь, щоб бути всеосяжнішою:
Щоб використовувати WebView.loadData () з кодуваннями latin1, ви повинні кодувати вміст html. Попередній приклад не працював правильно в Android 4+, тому я змінив його таким чином:
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);
}
Але пізніше я перейшов на WebView.loadDataWithBaseURL (), і код став дуже чистим і не залежно від версії Android:
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
myWebView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
Чомусь ці функції мають зовсім іншу реалізацію.