Quem já executou um programa java no console (prompt de comando) do Windows provavelmente já conhece o problema: algumas letras acentuadas não aparecem corretamente. O problema é antigo e o pessoal da Sun já disse que não vai arrumar, veja bug, bug, bug.
Este problema acontece porque o Windows separa a codificação do console (OEM por padrão) da codificação das demais aplicações (ANSI por padrão). Quando a máquina virtual java é iniciada ela assume a codificação das demais aplicações e não a do console.
Vamos usar o código a seguir para ver como isso tudo funciona:
public class Acentos {
public static void main(String[] args) {
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("aàáâã");
System.out.println("eèéê");
System.out.println("iìí");
System.out.println("oòóôõ");
System.out.println("uùúü");
System.out.println("cç");
}
}
Ao compilar e executar o código temos o seguinte resultado:

O comando chcp exibe a codificação usada no console, que no caso é 850 (ou Cp850, de CodePage). Na linha 3 é impresso a codificação que o java está utilizando, no caso Cp1252. Como as codificações são diferentes algumas letras acentuadas são não aparecem corretamente. Para resolver o problema temos que fazer as codificações coincidirem. Neste caso existe duas opções, alterar a codificação do console ou disser para o java utilizar outra codificação. A segunda solução é rápida e direta, basta mudar o valor da propriedade file.encoding para cp850. Esta opção não é muito robusta pois exige a mudança na chamada do java para todos os programas.
A outra opção é mudar a codificação do console, isto pode ser feito com o comando chcp 1252. Para esta solução funcionar é preciso alterar a fonte do console. Clique no ícone no canto superior esquerdo da janela do console, selecione “Propriedades” e altere a fonte para “Lucida Console”. Veja o resultado abaixo.

Para torna a alteração da fonte permanente, clique no ícone no canto superior esquerdo da janela do console, e selecione “Padrão”. Feche o console e abra novamente e você verá que a fonte foi alterada, no entanto, ao executar o comando chcp a codificação ainda continua sendo 850. Para mudar a codificação do console é preciso editar o registro, procure a chave \HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage\OEMCP e altere o valor para 1252. Reinicie o computador e pronto!

Não quis comentar inicialmente, mas ainda existe uma outra solução, que além de acabar com este problema resolve diversos outros: trocar o Windows pelo Ubuntu!

Eu tenho que concordar com o Sr. Marco Aurélio que a melhor solução realmente é o Linux. Pena que o Ubuntu usa o Gnome como padrão, apesar que temos o KUbuntu. Para o seu próximo artigo um desafio: Gnome x Kde ou GTK+ versus Qt. Não vale argumentar que para desenvolver aplicações comerciais deve-se pagar pelo framework Qt. Abraços. Tubbies
Excelente!
Já havia descoberto como fazer isso, antes de acessar sua páginas, porém, não sabia alterar Java para tal.
http://ferjor.vilabol.uol.com.br/pro/java/java.html
abraços
e
felicidades!
Posta mais! Compatilha seu conhecimento conosco, foi o André Noel quem pediu..;)
Cadê mais post? Tem que postar mais aí, ô!
ai brother, continua postando, e ajudando a nós que somos iniciantes, mas já apaixonados por Ubuntu.
Valeu !
Marco Aurélio,
Conheci seu site através de uma dica do André Noel (http://planeta.ubuntubrasil.org/post/3117), e gostei muito. Então, assim como o André, venho pedir que você faça mais posts, para ajudar a diminuir a ignorância de pobres leitores como eu.
Valeu!
João.
Campanha do André Noel – Volta a postar – Até agora li somente esse post, já pagou o ingresso, rsrsrs.
Aí Marco,
O povo gostou…
Manda ver e escreve mais…
Estou acompanhando seus feeds…
Parou de escrever Marco??? Escreve mais pô!
Compartilhe seus conhecimentos…
Legal
Agora posta mais ai!!
ferjor, Marcos, Bruno, prestone, jtoledo, Marcelo, Rodrigo Hübner, Marcio: valeu pela força, pessoal. Espero que gostem dos próximos posts!
Olá amigo, tentei fazer está configuração nas chaves do Windows, mas quando chega na última opção, o Vista que uso não tem. A opção que falo é a : \OEMCP. E agora, teria outro caminho? Preciso urgentemente desta solução para trabalho da faculdade. Obrigado.
Samuel.
Samuel, não posso te ajudar neste caso, não tenho acesso a uma máquina com Vista… Mas fica a última sugestão: usar o Ubuntu!