Ich habe versucht, mit java.io.FileReader einige Textdateien zu lesen und in eine Zeichenfolge zu konvertieren, aber ich habe festgestellt, dass das Ergebnis falsch codiert und überhaupt nicht lesbar ist.
Hier ist meine Umgebung:
Windows 2003, Betriebssystemcodierung: CP1252
Java 5.0
Meine Dateien sind UTF-8-codiert oder CP1252-codiert, und einige von ihnen (UTF-8-codierte Dateien) können chinesische (nicht lateinische) Zeichen enthalten.
Ich benutze den folgenden Code, um meine Arbeit zu erledigen:
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();
}
Der obige Code funktioniert nicht. Ich habe festgestellt, dass die FileReader-Codierung CP1252 ist, auch wenn der Text UTF-8-codiert ist. Aber das JavaDoc von java.io.FileReader sagt Folgendes:
Die Konstruktoren dieser Klasse gehen davon aus, dass die Standardzeichencodierung und die Standardgröße des Bytepuffers angemessen sind.
Bedeutet dies, dass ich die Zeichencodierung nicht selbst festlegen muss, wenn ich FileReader verwende? Aber ich habe derzeit falsch codierte Daten erhalten. Wie gehe ich richtig mit meiner Situation um? Vielen Dank.