title: Java InputStream encoding/charset
body: <p>Running the following (example) code</p>
  
  <pre><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");
      }
  }
  </code></pre>
  
  <p>gives me this output</p>
  
  <pre>
  test.java:9 [byte] (char)? (int)63
  test.java:10 [char] (char)? (int)229
  test.java:11 string below
  ?
  test.java:13 string above
  </pre>
  
  <p>How do I retain the correct byte value (-27) in the line-9 printout? And consequently receive the expected output of the <code>System.out.println(s)</code> command (å).</p>