Как сделать кодировку символов в WebView? - PullRequest
0 голосов
/ 08 мая 2018

У меня есть приложение, в котором есть несколько WebView, каждый из которых отображает абзац текста описания. Почти все они содержат искаженные символы, обычно там, где есть одинарные или двойные кавычки.

Например, строка, которая должна выглядеть следующим образом:

Тело ‘N’ Space

Заканчивается в WebView так:

Тело В Пространстве

Вот что я впервые попробовал:

textWebView.loadData(getHtmlDescription(), "text/html", "UTF-8");

В итоге я попробовал множество решений, включая следующие:

Добавление этого до loadData:

WebSettings webSettings = textWebView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");

Изменение loadData на loadDataWithBaseURL:

WebSettings webSettings = textWebView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");
textWebView.loadDataWithBaseURL(null, getHtmlDescription(), "text/html", "UTF-8", null);

Изменение "text/html" на "text/html; charset=UTF-8":

WebSettings webSettings = textWebView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");
textWebView.loadDataWithBaseURL(null, getHtmlDescription(), "text/html; charset=UTF-8", "UTF-8", null);

И, к сожалению, ни одно из этих решений не сработало!

1 Ответ

0 голосов
/ 08 мая 2018

Попробовав все эти решения безуспешно, я попытался просто найти и заменить всех плохих персонажей, которых мог видеть. Это было слишком громоздко и неэффективно, но я как-то наткнулся на следующее исправление из двух строк, которое выполнило всю работу!

В моем методе getHtmlDescription() я добавил следующие две строки:

description = description.replace("Â", "");
description = Html.fromHtml(description, Html.FROM_HTML_MODE_LEGACY).toString();
return description;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...