Ho provato a usare java.io.FileReader per leggere alcuni file di testo e convertirli in una stringa, ma ho scoperto che il risultato è codificato erroneamente e non è affatto leggibile.
Ecco il mio ambiente:
Windows 2003, codifica del sistema operativo: CP1252
Java 5.0
I miei file sono codificati UTF-8 o codificati CP1252 e alcuni di essi (file codificati UTF-8) possono contenere caratteri cinesi (non latini).
Uso il seguente codice per svolgere il mio lavoro:
private static String readFileAsString(String filePath)
throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
FileReader reader = new FileReader(filePath);
//System.out.println(reader.getEncoding());
BufferedReader reader = new BufferedReader(reader);
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
Il codice sopra non funziona. Ho trovato che la codifica del FileReader è CP1252 anche se il testo è codificato UTF-8. Ma JavaDoc di java.io.FileReader dice che:
I costruttori di questa classe presumono che la codifica dei caratteri predefinita e la dimensione del buffer byte predefinita siano appropriate.
Questo significa che non devo impostare la codifica dei caratteri da solo se sto usando FileReader? Ma al momento ho ricevuto dati codificati erroneamente, qual è il modo corretto di gestire la mia situtaion? Grazie.