Я попытался использовать 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? Но в последнее время я получил неверные кодированные данные, какой правильный способ справиться с моей ситуацией? Спасибо.
