Pular para o conteúdo

Fóruns Banco de dados Oracle Acentuação Oracle Responder a: Acentuação Oracle

#117720
Avatar photoJosé Laurindo Chiappa
Moderador

    Blz ? Então, tem uma ** série ** de conceitos (a Maioria deles não inventado pelo Oracle) que entram em questão aí…. Primeira coisa (que Acredito que vc sabe, mas enfim) é o Conceito (esse sim, do próprio RDBMS Oracle) que num database Oracle as propriedades NLS (ie, Linguagem, território, codificação de caracteres, formato de data, etc, etc, etc) se comportam como um DEFAULT, ie, são usadas SE o cliente não informar nada, sim sim sim ? E claro, além de servirem como DEFUALT, são também o ALVO para onde a config do cliente vai ser Convertida, okdoc ?? Ou seja : num banco criado com characterset WE8MSWIN1252 (digamos), não só se o cliente não informar rigorosamente nada de characterset ele vai usar esse aí, mas TAMBÉM, se o cliente informar um characterset qquer é para o WE8MSWIN1252 que esse outro characterset VAI tentar ser convertido, okdoc ??
    Esse primeiro ponto estando Claro e Compreendido, aí vem o SEGUNDO PONTO : via de regra nós acessamos uma máquina remota via um software de terminal qualquer (no Linux, é comum o PuTTY, mas N outros existem) – nem preciso dizer, imagino, que (principalmente para Linux) NA CONFIG DESSE SOFTWARE de terminal vc OBRIGATORIAMENTE TEM que indicar QUAL a representação de caracteres que o software vai usar : pro PuTTY por exemplo vc seta isso no menu Window opção Translation… Outros terminais necessariamente TAMBÉM tem alguma opção onde vc setar isso : (no K-TERM default de algumas distros Linux é, na própria janela do terminal, no menu Terminal a opção Set Character Encoding) , esteja 100% CERTO de estar usando o setting correto…

    Finalmente, chegamos no TERCEIRO PONTO, que Muito Provavelmente deve estar causando o seu problema : além das opções de NLS do seu programa-cliente estarem corretas (o que normalmente se faz com as variáveis de ambiente Oracle NLS_LANG, NLS_CHACARCTERSET, NLS_DATE_FORMAT, etc) , ALÉM DISSO normalmente de tem ENCODINGS NO PRÓPRIO prompt que devem ser setados : no prompt de comandos Windows isso é o CODEPAGE, no prompt de comandos Linux é o LOCALE : veja https://eduardolegatti.blogspot.com/2011/01/habilitando-o-suporte-acentuacao-no.html pra um exemplo no Windows, onde as vars NLS tavam ok, a config no banco tava OK, o que ficou faltando é o encoding DO PROMPT DE COMANDOS USADO, no exemplo feito via CHCP, já que era Windows… No Linux esse encoding do prompt de comandos pode variar de acordo com o shell em uso, mas no bash (um dos mais usados) é o comando LOCALE…

    ==> Essa é a sua resposta, então : ABSOLUTAMENTE NÂO BASTA só setar as variáveis Oracle NLS_xxx (seja no registry, seja no prompt de comandos) : para vc poder usar Acentuação no RDBMS Oracle, vc TEM que ter as propriedades corretas no database, TEM que ter os settings de NLS corretos no seu programa-cliente (se for sqlplus ou algum programa que conecte no banco Oracle via OCI, realmente vc seta isso via variáveis NLS, correto), vc TEM que ter o software de Terminal corretamente configurado e FINALMENTE, vc TEM QUE TER o ENCODING CORRETO no seu prompt de comando… Okdoc ??

    []s

    Chiappa