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.
Me ajudou bastante esse artigo! Estava com esse problema e ele foi resolvido! Obrigado.
ResponderExcluirEu estava com um problema parecido, mas era em execuções via BAT quando a senha do usuário possuía caracteres como, por exemplo "ç". Eu coloquei o chcp 1252 antes da execução e resolveu.
ResponderExcluirObrigado"