Как мне преобразовать строку в UTF-8 в Android? - PullRequest
5 голосов
/ 02 июля 2010

Я использую анализатор HTML под названием Jsoup для загрузки и анализа файлов HTML.Проблема в том, что очищаемая веб-страница кодируется в ISO-8859-1 кодировке, в то время как Android использует кодировку UTF-8 (?).Это приводит к тому, что некоторые символы отображаются в виде вопросительных знаков.

Так что теперь я думаю, мне следует преобразовать строку в формат UTF-8.

Теперь я нашел этот класс с именем CharsetEncoder в Android SDK, который, я думаю, мог бы помочь мне.Но я не могу понять, как реализовать это на практике, поэтому мне интересно, смогу ли я получить некоторую помощь на практическом примере.

ОБНОВЛЕНИЕ: Код для чтения данных ( Jsoup )

url = new URL("http://www.example.com");
Document doc = Jsoup.parse(url, 4000);

Ответы [ 2 ]

6 голосов
/ 02 июля 2010

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

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

4 голосов
/ 03 июля 2010

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

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
...