Domanda

Sto usando un parser HTML chiamato Jsoup, per caricare file e analizzare HTML. Il problema è che la pagina web che sto raschiando è codificato in ISO-8859-1 charset mentre Android sta usando la codifica UTF-8 (?). Si tratta di risultati in alcuni caratteri mostrando come punti interrogativi.

Così ora Credo che dovrebbe convertire la stringa in formato UTF-8.

Ora ho trovato questa classe chiamata CharsetEncoder l'SDK di Android, che credo mi potrebbe aiutare. Ma io non riesco a capire come implementarlo in pratica, quindi mi chiedo se potrebbe ottenere som aiuto da un esempio pratico.

UPDATE: Codice di leggere i dati ( Jsoup )

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

Soluzione

È possibile lasciare che Android fare il lavoro per voi leggendo la pagina in un byte [] e quindi utilizzando i metodi jSoup per l'analisi di oggetti stringa.

Non dimenticare di specificare la codifica quando si crea la stringa dai dati letti dal server utilizzando la stringa corretta costruttore .

Altri suggerimenti

Byte codifiche e le stringhe

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top