Come faccio a convertire una stringa UTF-8 in Android?
-
02-10-2019 - |
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);
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
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