Проблемы кодирования в приложении 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");
}