java bufferedReader, scrive qualcosa di diverso da quello che legge
-
07-07-2019 - |
Domanda
ho analizzato un testo (codice CAL) con BufferedReader e BufferedWriter in Java, sfortunatamente, righe che ho rosso e scritto con outStream.write (line); sono cambiate, guarda Screenshot:
http://uploadz.eu/images/4qz8mtkm2d9zx3x5ms3n.png h ** p: //uploadz.eu/images/c03hgkrgrmit2ij2mug.png
come vedi, alcuni caratteri speciali hanno cambiato le linee anche se non intendevo cambiarle.
per quanto ne so, Bufferedwriter / Reader dovrebbe funzionare in Unicode per impostazione predefinita.
Soluzione
Bene BufferedWriter
e BufferedReader
stanno codificando in modo agnostico: non hanno mai a che fare con le codifiche effettive, dato che stanno solo bufferando lettori e scrittori esistenti.
Ora FileWriter
e FileReader
utilizzano la codifica di sistema predefinita (urgh). Per ovviare a questo, di solito dovresti usare una coppia InputStream
/ InputStreamReader
o OutputStream
/ OutputStreamWriter
(possibilmente racchiuso in un BufferedReader
/ BufferedWriter
) e specificare esplicitamente la codifica.
Non hai detto da cosa stai leggendo: è un file? Conosci la codifica del file?
Altri suggerimenti
Dovresti conoscere la codifica se intendi trattare il contenuto come testo (String) oppure, quando la copia è il tuo obiettivo, o trattare il contenuto come un array di byte.