Aparecendo uma interrogação virado para baixo em todas as palavras que tem Ç e Til ~

Percebemos que este erro acontece quando o client da Oracle não encontra a definição para NLS_LANG, quando não o encontra ele utiliza por padrão o NLS_LANG = AMERICAN_AMERICA.US7ASCII, sendo que o charset US7ASCII não aceita caracteres especiais.
Para solucionar o problema é necessário verificar onde se está buscando o NLS_LANG, para isso podemos utilizar o aplicativo Process Monitor (Segue aplicativo abaico no link e passos para utilização anexo).
Após identificar, deve-se incluir manualmente o informação (BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252) onde o NLS_LANG esta sendo buscado (Sugerimos envolver um DBA para esta tarefa).
Há também a alternativa de definir a variável de ambiente NLS_LANG no Windows, porém todos os clients da máquina em questão vão utilizar esta configuração.

No sistema Senior, o problema é percebido quando determinada máquina roda a personalização/consistência de base via CBDS utilizando uma máquina onde o client do banco não consegue localizar o registro que define a linguagem e o charset que a estação está utilizando. Indicamos para que seja criada a variável de ambiente para que quando o client da estação se conecte ao banco, o client utilize o NLS_LANG homologado pela Senior cujo é "PORTUGUESE_PORTUGAL.WE8MSWIN1252", quando existir a variável de ambiente "NLS_LANG", o client do banco sempre ira utilizar está variável e seu valor. Fonte: http://www.oracle.com/technetwork/products/globalization/nls-lang-099431.html

Ao iniciar o processo de personalização via CBDS, nosso processo recria uma tabela que guardara todas os nomes das tabelas x campos com suas descrições as quais são pertencentes a base de dados do cliente. Este processo consiste em exportar a tabela gerada com todos os valores "Nome da Tabela x Nome do Campo e suas descrições" para um arquivo TBS, que ao final da personalização este arquivo será exportado para a base de dados. Quando o client do banco não encontra o registro NLS_LANG na estação que única o processo de personalização de base no CBDS, o client do banco assume o padrão americano, isso faz com que descrições de campos de tabelas, fiquem com sua acentuação incorreta por não existir "caracteres: ã,ç" no charset americano, sendo substituído pelo caractere "?".

Para corrigir a base de dados, se faz necessário realizar uma nova personalização/consistência de base, onde ela ira realizar o processo descrito anteriormente com o charset válido, ou seja, recriar a estrutura de todas os nomes das tabelas x campos com suas descrições corretamente. 


Process Monitor.rar


Atualizado em 22/09/2023
Este artigo foi útil?  
Agradecemos sua avaliação.