Problemas em conversões entre ASCII e Char

Boa tarde pessoal,

Sou novo no fórum e esse é meu primeiro post, eu ainda estou longe de um usuário avançado mas já tenho experiencia com programação em outras linguagens e estou no java a alguns meses.

Estou desenvolvendo um projetinho de criptografia para a faculdade, e para isso pretendo usar o valor ASCII e Binário dos caracteres que serão criptografados.

O problema é que fui fazer alguns testes pra verificar se dava tudo certo na conversão usando cast e estranhamente alguns valores int não são convertidos corretamente.

Fiz uma classe bem simples abaixo para exemplificar o problema, se vocês repararem todos os inteiros de 128 a 159 são convertidos para “?”, que equivale a 63 na tabela ASCII. Será algum problema de configuração da minha máquina ou existe outra forma mais correta de fazer isso?

import java.io.FileReader;
import java.io.FileWriter;
import static java.lang.System.err;


public class Teste {

    public static void main(String[] args) {
        try{
            try {
                FileWriter file = new FileWriter("C:/fontes/teste.txt", true);
                for(int i = 0;i < 255; i++) {
                    file.write(String.valueOf(i) + " = " + String.valueOf((char)i) + "\n");
                }
                file.flush();
                file.close();
            } catch (Exception ex) {

            }
            FileReader arquivo = new FileReader("C:/fontes/teste.txt");
            while(arquivo.ready()){
                err.println((int)arquivo.read());
            }
        } catch (Exception ex) {}
    }
}

Agradeço a todos.