Intenté usar java.io.FileReader para leer algunos archivos de texto y convertirlos en una cadena, pero descubrí que el resultado está codificado incorrectamente y no es legible en absoluto.
Aquí está mi entorno:
Windows 2003, codificación del sistema operativo: CP1252
Java 5.0
Mis archivos están codificados en UTF-8 o CP1252, y algunos de ellos (archivos codificados en UTF-8) pueden contener caracteres chinos (no latinos).
Yo uso el siguiente código para hacer mi trabajo:
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();
}
El código anterior no funciona. Descubrí que la codificación del FileReader es CP1252 incluso si el texto está codificado en UTF-8. Pero el JavaDoc de java.io.FileReader dice que:
Los constructores de esta clase asumen que la codificación de caracteres predeterminada y el tamaño de byte-buffer predeterminado son apropiados.
¿Significa esto que no estoy obligado a configurar la codificación de caracteres por mi cuenta si estoy usando FileReader? Pero obtuve datos codificados incorrectamente actualmente, ¿cuál es la forma correcta de lidiar con mi situación? Gracias.