Olá a todos!

Vou interromper um pouco a publicação de partes do meu projeto sobre Hard Parse para falar de um problema que vinha passando e finalmente consegui resolver (com ajuda de terceiros).

Quem nunca passou por problemas de acentuação utilizando o SQL*Plus via prompt do DOS?

Pois bem.

Sempre passei por esse problema e para "resolver" momentaneamente ou atender à solicitação, utilizava outra ferramenta (TOAD ou Oracle SQL Developer) para executar alguns scripts que possuíam acentos. Obviamente, isso não resolve o problema, e em uma pesquisa que fiz, consegue sanar essa situação.

Inicialmente, vou exemplificar o problema.

Primeiro criei uma tabela chamada TESTE, inseri um registro com valor “acentuação” e realizei uma consulta nessa tabela, conforme indicado na Figura 1.

Figura 1 - Exemplificando o problema de acentuação. (Fonte: autoria própria)

Como pode ser verificado na imagem acima, a acentuação bem como o “ç” do valor do campo apresentam problema na visualização: onde deveria constar a palavra “acentuação” consta o valor “acentua¿Æo”.
Pois bem. Entendido o problema, vamos à solução!

Existe um comando do DOS chamado CHCP (Change Code Page), que é responsável pela manutenção dos caracteres de modo geral dos códigos submetidos no DOS.
Para sabermos o valor atual na máquina, basta abrir um prompt e digitar chcp conforme indicado na Figura 2.
Figura 2 - Verificação do CHCP. (Fonte: autoria própria)

Na imagem acima, podemos constatar que o valor do Change Code Page é 850, que equivale à linguagem “Multilingual (Latin I)” segundo a Microsoft.

Para conseguirmos o suporte à acentuação para uso no SQL*Plus via DOS, vamos configurar o CHCP para a linguagem “Western Latin” cujo valor equivalente é 1252. Podemos fazer essa alteração apenas na sessão do prompt aberta no momento, ou configurar, por exemplo, em um atalho para todas as vezes que esse for acessado, não ocorra problemas de acentuação durante seu uso.

Em ambas as alterações, a fonte da letra que deve ser utilizada é a mesma: Lucida Console (para usar as mensagens traduzidas da versão do Windows em inglês sem problemas), conforme Figura 3.
Figura 3 - Configuração da fonte do prompt de comando. (Fonte: autoria própria)

Para configurar o suporte na sessão, basta executar o comando apresentado na Figura 4.

Figura 4 - Alteração do CHCP na sessão. (Fonte: autoria própria)

Agora vamos verificar se a alteração surtiu efeito através dos comandos exibido na Figura 5.

Figura 5 - Verificação de sucesso da alteração. (Fonte: autoria própria)

Opá...

Mas calma lá, Raphael. O erro não foi corrigido!

Na verdade foi sim, o que acontece é que o valor do campo foi inserido de forma errada, portanto o que foi gravado no banco está errado! Vamos efetuar um UPDATE e verificar o valor do campo conforme Figura 6.

Figura 6 - Update de registro para sucesso da alteração na configuração. (Fonte: autoria própria)

Pronto! Perfeito! A alteração na sessão funcionou conforme esperado.

Agora vamos configurar o atalho.

Essa configuração nada mais é do que a indicação que no momento da inicialização do programa, seja executado um script (já conhecido por nós), conforme indicado na Figura 7.

Figura 7 - Alteração na inicialização do atalho do prompt de comando. (Fonte: autoria própria)

Vou só confirmar que tudo correu certo conforme Figura 8.

Figura 8 - Verificação de sucesso na configuração do atalho. (Fonte: autoria própria)

É importante atentar que na primeira linha do atalho prompt onde foi realizada a configuração, sempre aparecerá o texto: “Página de código ativa: 1252”; confirmando que o CHCP está setado para o valor 1252.

OBS.: Vale lembrar que no SQL*Plus para Windows, o problema de acentuação não ocorre.
Bom pessoal, espero ter ajudado com esse post. Julgo o assunto bastante útil para quem usa SQL Plus.

Grande abraço e até a próxima!

Referências:

Legatti, Eduardo. Oracle Blog - Habilitando o suporte à acentuação no prompt do DOS para uso do SQL*Plus. Publicado em 02/01/2011. Disponível em: http://eduardolegatti.blogspot.com.br/2011/01/habilitando-o-suporte-acentuacao-no.html . Acessado em 28/02/2013.

Microsoft. CHCP. Disponível em: http://technet.microsoft.com/en-us/library/bb490874.aspx. Acessado em 06/03/2013.