Я попытался использовать java.io.FileReader для чтения некоторых текстовых файлов и преобразования их в строку, но обнаружил, что результат неверно закодирован и вообще не читается.
Вот моя среда:
Windows 2003, кодировка ОС: CP1252
Java 5.0
Мои файлы имеют кодировку UTF-8 или CP1252, и некоторые из них (файлы с кодировкой UTF-8) могут содержать китайские (нелатинские) символы.
Я использую следующий код для работы:
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();
}
Приведенный выше код не работает. Я обнаружил, что кодировка FileReader - CP1252, даже если текст закодирован в UTF-8. Но JavaDoc java.io.FileReader говорит, что:
Конструкторы этого класса предполагают, что кодировка символов по умолчанию и размер байтового буфера по умолчанию подходят.
Означает ли это, что мне не нужно самостоятельно устанавливать кодировку символов, если я использую FileReader? Но в настоящее время я получил неверно закодированные данные, как правильно поступить в моей ситуации? Спасибо.