2010-07-01 12 views
5

Estoy usando un analizador HTML llamado Jsoup, para cargar y analizar archivos HTML. El problema es que la página web que estoy raspando está codificada en el juego de caracteres ISO-8859-1, mientras que Android está usando la codificación UTF-8 (?). Esto da como resultado que algunos personajes aparezcan como signos de interrogación.¿Cómo convierto una cadena a UTF-8 en Android?

Así que ahora creo que debería convertir la cadena al formato UTF-8.

Ahora he encontrado esta clase llamada CharsetEncoder en el SDK de Android, lo que supongo que podría ayudarme. Pero no puedo encontrar la manera de implementarlo en la práctica, así que me pregunto si podría obtener ayuda con un ejemplo práctico.

ACTUALIZACIÓN: El código para leer los datos (Jsoup)

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

Podría publicar el código utilizado para leer un documento html? – yanchenko

+0

OK, he actualizado mi publicación. – droidgren

Respuesta

6

Puede dejar Android haga el trabajo por usted por la lectura de la página en un byte [] y utilizando los métodos jSoup para analizar los objetos String.

No olvide especificar la codificación al crear la cadena a partir de la lectura de datos del servidor utilizando la cadena correcta constructor.

4

Byte encodings and Strings

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 
Cuestiones relacionadas