Caríssimos
Verifiquei que o encode usado pelo prompt do DOS quando rodamos aplicações Java de linha de comando no Windows é o Cp850.
Por causa disso, para conseguirmos apresentar caracteres acentuados de maneira correta no console temos que converter o UTF-8 das strings do Java para o Cp850 usando um OutputStreamWriter:
OutputStreamWriter o = new OutputStreamWriter(System.out, "Cp850");
PrintWriter pw = new PrintWriter(o, true);
pw.println("àáçã");
Meu problema é que minha aplicação tem que rodar também em diferentes versões de Solaris e Linux.
Como é que eu vou saber que encode usar para o terminal de cada um destes sistemas a fim de criar o OutputStreamWriter certo? Será que tem como descobrir isso a partir de alguma coisa na System ou na Runtime?
Vi que o Java 6 traz uma novidade, o System.console() que retorna uma instancia de java.io.Console, na qual temos um método writer() que retorna um java.io.PrintWriter já configurado para converter os caracteres para o encode do console da plataforma que você estiver usando.
Infelizmente tenho que rodar isso com Java 5 ainda e estou odiando a idéia de ter que passar por parâmetro para minha aplicação.
Alguém tem alguma idéia?
Talvez ler alguma variável de ambiente do SO?
Obrigado.

Bem … se eu conseguisse resolver para Telnet e SSH já estaria muito feliz!