Aplicación Java: no se puede leer el archivo codificado iso-8859-1 correctamente

Tengo un archivo que está codificado como iso-8859-1 y contiene caracteres como ô.

Estoy leyendo este archivo con código Java, algo así como:

File in = new File("myfile.csv");
InputStream fr = new FileInputStream(in);
byte[] buffer = new byte[4096];
while (true) {
    int byteCount = fr.read(buffer, 0, buffer.length);
    if (byteCount <= 0) {
        break;
    }

    String s = new String(buffer, 0, byteCount,"ISO-8859-1");
    System.out.println(s);
}

Sin embargo, el carácter ô siempre está distorsionado, generalmente se imprime como? .

He leído sobre el tema (y he aprendido un poco en el camino) p.

http://www.joelonsoftware.com/articles/Unicode.htmlhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058http://www.ingrid.org/java/i18n/utf-16/

pero todavía no puedo hacer que esto funcione

Curiosamente, esto funciona en mi PC local (xp) pero no en mi caja de Linux.

He comprobado que mi jdk admite los conjuntos de caracteres necesarios (son estándar, por lo que esto no es una sorpresa) usando:

System.out.println(java.nio.charset.Charset.availableCharsets());

Respuestas a la pregunta(5)

Su respuesta a la pregunta