Resolvendo problemas de codificação de caracteres. Dica enviada pelo Constantino José Rocha Cronemberger
Geralmente quando vamos executar um programa Java, na linha de comando do Windows, que usa os métodos System.out.println ou System.err.println, temos problemas com a acentuação, como por exemplo: A saída para o comando System.out.println("não foi possível mostrar esta mensagem corretamente"); na linha de comando do Windows sai como: nÒo foi possÝvel mostrar esta mensagem corretamente Este problema ocorre porque o conjunto de caracteres usado pela linha de comando do Windows é o Cp850(no caso da versão em português do sistema) e não o Cp1252 que é o padrão para todos os outros aplicativos do Windows, incluindo o Java. Para resolver esse problema basta substituir os atributos System.out e System.err que são do tipo PrintStream por instâncias que estejam configuradas para codificar os caracteres no padrão Cp850, como por exemplo: // cria um novo PrintStream PrintStream ps = new PrintStream(new FileOutputStream(FileDescriptor.out),true,"cp850"); // atualiza o atributo System.out System.setOut(ps); System.out.println("não foi possível mostrar esta mensagem corretamente"); Nesse caso a saída na linha de comando é correta, só que se esta saída for redirecionada para um arquivo, teremos então problemas no caso de abrir o arquivo com o Notepad por exemplo, onde teremos: nÆo foi poss¡vel mostrar esta mensagem corretamente Moral da história, não dá para fixar uma codificação padrão a ser usada no Windows e o melhor caminho talvez seja criar uma mecanismo para que o usuário possa configurar isso manualmente. Constantino José Rocha Cronemberger Engenheiro de Computação pela Unicamp [EMAIL PROTECTED] ______________________________________________________________________________________________ Handerson Ferreira Gomes Summa Technologies Boletim Dicas Java - Sua dose diária de Java. ================================================================ Dicas-Java circula diariamente com pequenas dicas sobre a plataforma Java e é mantido pela Sociedade de Usuários Java - SOUJAVA (http://www.soujava.org.br) - Quer contribuir com uma dica sobre Java? Envie um e-mail para [EMAIL PROTECTED] - Participe de outras listas de discussão sobre a linguagem Java. Saiba mais em http://www.soujava.org.br/lista.htm ------------------------------------------------------------------ - Para assinar este boletim envie um e-mail para [EMAIL PROTECTED] - Para cancelar sua assinatura envie um e-mail para [EMAIL PROTECTED] - O histórico das Dicas-List pode ser encontrado em http://www.mail-archive.com/dicas-list%40soujava.org.br