Как я преобразовываю строку в UTF-8 в Android?

Я использую синтаксический анализатор 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);

5
задан Bhargav Rao 7 April 2015 в 16:36
поделиться

2 ответа

Вы можете позволить Android сделать эту работу за вас, прочитав страницу в байт[] и затем используя методы jSoup для разбора строковых объектов.

Не забудьте указать кодировку при создании строки из данных, считанных с сервера, используя правильный конструктор String.

6
ответ дан 13 December 2019 в 22:01
поделиться

байтовые кодировки и строки

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
4
ответ дан 13 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: