roblema de codificação @Java FileReader

Tentei usar o java.io.FileReader para ler alguns arquivos de texto e convertê-los em uma string, mas descobri que o resultado está codificado incorretamente e não é legíve

Aqui está o meu ambiente:

Windows 2003, codificação do sistema operacional: CP1252

Java 5.0

Meus arquivos são codificados em UTF-8 ou CP1252 e alguns deles (arquivos em UTF-8) podem conter caracteres chineses (não latinos

Uso o seguinte código para fazer meu trabalho:

   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();
    }

O código acima não funciona. Eu descobri que a codificação do FileReader é CP1252, mesmo que o texto seja codificado em UTF-8. Mas o JavaDoc do java.io.FileReader diz que:

Os construtores desta classe assumem que a codificação de caracteres padrão e o tamanho padrão do buffer de bytes são adequado

Isso significa que não sou obrigado a definir a codificação de caracteres sozinho se estiver usando o FileReader? Mas, atualmente, recebi dados codificados incorretos. Qual é a maneira correta de lidar com minha situação? Obrigado

questionAnswers(3)

yourAnswerToTheQuestion