Codage Java InputStream / jeu de caractères

Exécutant la commande suivante (exemple) code

import java.io.*;

public class test {
    public static void main(String[] args) throws Exception {
        byte[] buf = { -27};
        InputStream is = new ByteArrayInputStream(buf);
        BufferedReader r = new BufferedReader(
                new InputStreamReader(is, "ISO-8859-1"));
        String s = r.readLine();
        System.out.println("test.java:9 [byte] (char)" + (char)s.getBytes()[0] + 
                " (int)" + (int)s.getBytes()[0]);
        System.out.println("test.java:10 [char] (char)" + (char)s.charAt(0) + 
                " (int)" + (int)s.charAt(0));
        System.out.println("test.java:11 string below");
        System.out.println(s);
        System.out.println("test.java:13 string above");
    }
}

me donne cette sortie

test.java:9 [octet] (char)? (int)63 
test.java:10 [char] (char)? (int)229 
test.java:11 chaîne ci-dessous 
? 
test.java:13 chaîne ci-dessus 

Comment puis-je conserver la bonne valeur d'un octet (-27) dans la ligne 9 imprimé? Et, par conséquent, recevoir de la sortie attendue de la System.out.println(s) de commande (å).

source d'informationauteur Tobbe