RETORNAR CARACTERE ESPECIAL DO BANCO DE DADOS
Bom dia pessoal, tudo bem ? Preciso de uma ajuda com um problema em relação a caracteres especiais.
Utilizo PostgreSQL e tenho um campo de texto na minha tabela com o seguinte valor por exemplo:
[Ô]Calçados Azaleia - Compre na Teste Calçados[Ô]
No banco de dados o texto fica da forma correta sem erros de collate nem nada, da forma exatamente igual a que eu coloquei aqui em cima.
Utilizo Npgsql para fazer minhas manipulações no banco de dados e uso como padrão criar um objeto de conexão, comando e um datareader. Não sei o que estou fazendo de errado que quando faço a consulta e atribuo ao datareader as letras que são caractere especial ficam com um sinal de [Ô]?[Ô] dentro de um losango preto, são letras como [Ô]ç[Ô], [Ô]á[Ô], [Ô]ã[Ô], etc.
Fiz muitas pesquisas mas não encontrei nada que pudesse me ajudar, encontrei apenas informações de que o problema poderia ser collate ou algo assim, mas não sei o que fazer... não consegui compreender bem isso. Alguém poderia me ajudar ? Abaixo algumas informações do meu cenário:
//Atribuindo obj conexão
Command.Connection = Conexao;
//Atribuindo a SQL.
Command.CommandText = sb.ToString();
//Executando o reader
DataReader = Command.ExecuteReader();
//Retornando o valor do Reader
DataReader[[Ô]descricao[Ô]].ToString()
--BANCO DE DADOS
CREATE DATABASE bd_teste
WITH OWNER = admin
ENCODING = [ô]SQL_ASCII[ô]
TABLESPACE = pg_default
LC_COLLATE = [ô]en_US.UTF-8[ô]
LC_CTYPE = [ô]en_US.UTF-8[ô]
CONNECTION LIMIT = -1;
Utilizo PostgreSQL e tenho um campo de texto na minha tabela com o seguinte valor por exemplo:
[Ô]Calçados Azaleia - Compre na Teste Calçados[Ô]
No banco de dados o texto fica da forma correta sem erros de collate nem nada, da forma exatamente igual a que eu coloquei aqui em cima.
Utilizo Npgsql para fazer minhas manipulações no banco de dados e uso como padrão criar um objeto de conexão, comando e um datareader. Não sei o que estou fazendo de errado que quando faço a consulta e atribuo ao datareader as letras que são caractere especial ficam com um sinal de [Ô]?[Ô] dentro de um losango preto, são letras como [Ô]ç[Ô], [Ô]á[Ô], [Ô]ã[Ô], etc.
Fiz muitas pesquisas mas não encontrei nada que pudesse me ajudar, encontrei apenas informações de que o problema poderia ser collate ou algo assim, mas não sei o que fazer... não consegui compreender bem isso. Alguém poderia me ajudar ? Abaixo algumas informações do meu cenário:
//Atribuindo obj conexão
Command.Connection = Conexao;
//Atribuindo a SQL.
Command.CommandText = sb.ToString();
//Executando o reader
DataReader = Command.ExecuteReader();
//Retornando o valor do Reader
DataReader[[Ô]descricao[Ô]].ToString()
--BANCO DE DADOS
CREATE DATABASE bd_teste
WITH OWNER = admin
ENCODING = [ô]SQL_ASCII[ô]
TABLESPACE = pg_default
LC_COLLATE = [ô]en_US.UTF-8[ô]
LC_CTYPE = [ô]en_US.UTF-8[ô]
CONNECTION LIMIT = -1;
Nunca usei o postgre, mas talvez o problema seja o seu banco ter sido criado com o ENCODING=[ô]SQL_ASCII[ô], já que de acordo com a documentação este encoding não especifica os caracteres acima do código 128, então acho que fica a critério do conector decidir como tratar estes caracteres
Se você puder trocar este encoding eu diria para testar com UTF8, já que é isso que está usando no collate
Se você puder trocar este encoding eu diria para testar com UTF8, já que é isso que está usando no collate
[Ô]OCELOT[Ô], vou ver o que eu posso fazer quanto a isso, pois se nao me engano depois de criado o banco de dados não tem como mudar o encoding sem dropar ele coisa que não posso fazer por ser banco real. Mesmo assim obrigado pela ajuda! Abraços
Faça seu login para responder