Sto provando a leggere da un file text/plain
su Internet, riga per riga. Il codice che ho in questo momento è:Reading InputStream come UTF-8
URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;
while ((readLine = in.readLine()) != null) {
lines.add(readLine);
}
for (String line : lines) {
out.println("> " + line);
}
Il file, test.txt
, contiene ¡Hélló!
, che sto usando per testare la codifica.
Quando ripasso lo OutputStream
(out
), lo vedo come > ¡Hélló!
. Non credo che questo sia un problema con lo OutputStream
dato che posso fare out.println("é");
senza problemi.
Qualche idea per la lettura da InputStream
come UTF-8? Grazie!
Il protocollo HTTP specifica la codifica. Perché non stai utilizzando un'API di libreria che la gestisce per te? Non dovresti mai dover indovinare la codifica come questa. Non intendo essere negativo: stai andando alla grande! Mi chiedo solo se non c'è un modo più semplice. – tchrist
Non avrò accesso al server che sta servendo il file 'text/plain', sfortunatamente, e non sta usando una codifica UTF-8. Non ero a conoscenza di alcuna buona libreria di rete; eventuali suggerimenti? –
Guardando i [documenti] (http://download.oracle.com/javase/6/docs/api/java/net/URL.html), non penserei che tu debba specificare la codifica. Sono sorpreso che ti danno un flusso di byte! Hai accesso a [URLConnection] (http://download.oracle.com/javase/6/docs/api/java/net/URLConnection.html) sottostante, da cui puoi controllare Content-Encoding, quindi aprire un InputStreamReader con l'argomento corretto. Un rapido controllo della sorgente non mostra nulla che sembra fare quello per te, il che sembra piuttosto dannoso e soggetto a errori, quindi probabilmente mi sono perso qualcosa. – tchrist