Можно использовать следующий метод для настройки содержимого loadData веб-представления (String data, String mimeType, String encoding)
Как решить проблему с неизвестной кодировкой html-данных ?!
А есть список кодировок ?!
Из своего колледжа я знаю, что в моем случае html поступает из БД и закодирован латинским-1. Я пытаюсь установить параметр кодировки на latin-1, на ISO-8859-1 / iso-8859-1, но все еще проблема с отображением специальных знаков, таких как ä, ö, ü.
Буду очень благодарен за любой совет.
WebView.loadDataWithBaseURL()
WebView.loadData () вообще не работает должным образом. Что мне нужно было сделать:
Я думаю, что в вашем случае вам следует заменить UTF-8 на latin1 или ISO-8859-1 как в заголовке, так и в WebView.loadData ().
И, чтобы дать полный ответ, вот официальный список кодировок: http://www.iana.org/assignments/character-sets
Я обновляю свой ответ, чтобы он был более содержательным:
Чтобы использовать WebView.loadData () с кодировками, отличными от latin1, вам необходимо закодировать html-контент. Предыдущий пример некорректно работал в Android 4+, поэтому я изменил его, чтобы он выглядел следующим образом:
Но позже я переключился на WebView.loadDataWithBaseURL (), и код стал очень чистым и не зависел от версии Android:
Почему-то у этих функций совершенно разная реализация.
источник
Насколько я понимаю,
loadData()
просто генерируетdata:
URL с предоставленными данными.Прочтите javadocs для
loadData()
:Следовательно, вы должны либо использовать US-ASCII и самостоятельно избегать любых специальных символов, либо просто кодировать все с помощью Base64. Следующее должно работать, если вы используете UTF-8 (я не тестировал это с latin1):
источник
У меня такая проблема, но:
работает не на всех устройствах. И объединяю несколько методов:
Оно работает.
источник
используйте это: String customHtml = text;
источник
источник
Самый безопасный способ загрузить htmlContent в веб-представление:
«Кодировка Base64» - это официальная рекомендация, которая была снова написана (уже присутствует в Javadoc) в последней ошибке 01/2019 в Chrominium (присутствует в WebView M72 (72.0.3626.76)):
https://bugs.chromium.org/p/chromium/issues/detail?id=929083
Официальное заявление команды Chromium:
«Рекомендуемое исправление:
наша команда рекомендует кодировать данные с помощью Base64. Мы предоставили примеры того, как это сделать:
Это исправление имеет обратную совместимость (работает с более ранними версиями WebView) и также должно быть рассчитано на будущее (вы не столкнетесь с будущими проблемами совместимости в отношении кодирования контента) ».
Пример кода:
источник
приведенные выше ответы не работают в моем случае. Вам нужно указать utf-8 в метатеге
источник
webview.loadDataWithBaseURL (null, text, «текст / html», «UTF-8», null);
источник