Ho un file codificato come iso-8859-1 e contiene caratteri come ô.Java App: impossibile leggere correttamente il file codificato iso-8859-1
io sto leggendo questo file con il codice Java, qualcosa di simile:
File in = new File("myfile.csv");
InputStream fr = new FileInputStream(in);
byte[] buffer = new byte[4096];
while (true) {
int byteCount = fr.read(buffer, 0, buffer.length);
if (byteCount <= 0) {
break;
}
String s = new String(buffer, 0, byteCount,"ISO-8859-1");
System.out.println(s);
}
Tuttavia il carattere O è sempre confuso, di solito di stampa come una? .
Ho letto l'argomento (e ho imparato un po 'sulla strada) ad es.
- http://www.joelonsoftware.com/articles/Unicode.html
- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
- http://www.ingrid.org/java/i18n/utf-16/
ma ancora non è possibile ottenere questo lavoro
È interessante notare che questo funziona sul mio pc locale (xp), ma non sulla mia macchina Linux.
Ho verificato che il mio JDK supporta i set di caratteri richiesti (sono di serie, quindi questo è senza sorpresa) utilizzando:
System.out.println(java.nio.charset.Charset.availableCharsets());
Dovrei aggiungere che sono in grado di vedere correttamente i caratteri o il file originale usando il mio terminale Linux se semplicemente cat i contenuti del file – Joel
Quale codifica dei caratteri viene utilizzata dal terminale? – McDowell
È interessante notare che se aggiungo la proprietà java di runtime "-Dfile.encoding = UTF16" funziona come previsto, anche se non vedo perché questo dovrebbe essere importante - e non lo vedo come una soluzione, ma piuttosto come un trucco. Non funziona con la proprietà impostata su UTF8. – Joel