Я использую синтаксический анализатор HTML под названием Jsoup, чтобы загрузить и проанализировать файлы HTML. Проблема состоит в том, что веб-страница, которую я очищаю, кодируется в ISO-8859-1
набор символов, в то время как Android использует UTF-8
кодирование (?). Это - результаты в некоторых символах, обнаруживающихся как вопросительные знаки.
Таким образом, теперь я предполагаю, что должен преобразовать строку в формат UTF-8.
Теперь я нашел этого Class по имени CharsetEncoder в SDK Android, который я предполагаю, мог помочь мне. Но я не могу выяснить, как реализовать его на практике, поэтому интересно, мог ли получить справку som с практическим примером.
ОБНОВЛЕНИЕ: Код для чтения данных (Jsoup)
url = new URL("http://www.example.com");
Document doc = Jsoup.parse(url, 4000);
Вы можете позволить Android сделать эту работу за вас, прочитав страницу в байт[] и затем используя методы jSoup для разбора строковых объектов.
Не забудьте указать кодировку при создании строки из данных, считанных с сервера, используя правильный конструктор String.
public static void main(String[] args) {
System.out.println(System.getProperty("file.encoding"));
String original = new String("A" + "\u00ea" + "\u00f1"
+ "\u00fc" + "C");
System.out.println("original = " + original);
System.out.println();
try {
byte[] utf8Bytes = original.getBytes("UTF8");
byte[] defaultBytes = original.getBytes();
String roundTrip = new String(utf8Bytes, "UTF8");
System.out.println("roundTrip = " + roundTrip);
System.out.println();
printBytes(utf8Bytes, "utf8Bytes");
System.out.println();
printBytes(defaultBytes, "defaultBytes");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} // main