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




Responder a