2010-07-01 4 views
5

J'utilise un analyseur HTML appelé Jsoup, pour charger et analyser les fichiers HTML. Le problème est que la page web que je gratte est encodée en charset ISO-8859-1 alors que Android utilise l'encodage UTF-8 (?). Ceci a pour résultat que certains caractères apparaissent comme points d'interrogation.Comment convertir une chaîne en UTF-8 sous Android?

Donc maintenant je suppose que je devrais convertir la chaîne au format UTF-8.

Maintenant, j'ai trouvé cette classe appelée CharsetEncoder dans le SDK Android, qui je pense pourrait m'aider. Mais je ne sais pas comment l'appliquer en pratique, alors je me demande si je pourrais obtenir de l'aide par un exemple pratique.

MISE À JOUR: Code pour lire les données (Jsoup)

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

Pouvez-vous poster le code utilisé pour lire un document html? – yanchenko

+0

OK, j'ai mis à jour mon message. – droidgren

Répondre

6

Vous pouvez laisser Android faire le travail pour vous en lisant la page dans un octet [], puis en utilisant les méthodes jSoup pour l'analyse syntaxique des objets String.

N'oubliez pas de spécifier le codage lorsque vous créez la chaîne à partir des données lues sur le serveur en utilisant la chaîne correcte 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 
Questions connexes