Проблемы кодирования в приложении Android (WebView.LoadData())

У меня проблема с кодированием части веб-страницы в моем Android-приложении. У меня есть приложение, которое собирает часть веб-страницы и отображает ее пользователю. Для этого вопроса допустим, что у меня есть веб-страница с текстом, а под текстом - таблица, а под таблицей - много мусора, в котором я не заинтересован. Поэтому я выбираю, что просматривать, используя позицию первого элемент (например, уникальный тег) и конечная позиция (там же, что-то уникальное. Использование inputsreamreader с начальной / конечной позицией.

Затем в моей строке ("строка") я запускаю:

String s = Uri.encode(string);

Строка s затем используется соответственно:

web.loadData(s, "text/html","ISO-8859-1");

Но это дает мне несколько нежелательных символов в середине текста: появляется "Â". Я пытался в строке запустить.replace("Â", ""); но это не решает проблему.

Я также попробовал следующее:

web.loadData(s, "text/html", "UTF-8");

web.loadData(s,"text/html;utf-8",null);

Но "В" и один или два "*" все еще появляются?

Поиск в Интернете и нашел: loadDataWithBaseUrlно это тоже не решает, так что мне бы очень хотелось, чтобы кто-то помогал мне:)

В верхней части страницы:

<html xmlns="http://www.w3.org/1999/xhtml" lang="sv-se" dir="ltr">

На другой странице:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" dir="ltr">

Итак, у меня есть одна английская и одна шведская страница, но ошибка касается обоих URL:s.

С наилучшими пожеланиями!

2 ответа

Использовать этот:

webview.loadData (html_content, "text / html; charset = utf-8", "utf-8");

Я проверил это, и это работает.

Этот код работал для меня.

String base64EncodedString = null;
                        try {
                            base64EncodedString = android.util.Base64.encodeToString((preString+mailContent.getBody()+postString).getBytes("UTF-8"), android.util.Base64.DEFAULT);
                        } catch (UnsupportedEncodingException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                        if(base64EncodedString != null)
                        {
                            wvMailContent.loadData(base64EncodedString, "text/html; charset=utf-8", "base64");  
                        }
                        else
                        {
                            wvMailContent.loadData(preString+mailContent.getBody()+postString, "text/html; charset=utf-8", "utf-8");
                        }
Другие вопросы по тегам