Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Problema ao usar/exibir caracteres especiais do banco de dados Oracle no aplicativo .Net


Certos caracteres no conjunto de caracteres WE8ISO8859P1 possuem uma representação binária diferente do mesmo caractere em UTF8.

O que eu sugiro são 2 maneiras possíveis

1) Tente usar provedores de dados nativos Oracle para .NET (ODP.NET). Pode haver um bug/recurso na biblioteca System.Data.OracleClient da Microsoft que este adaptador não suporta automaticamente a conversão de WE8ISO8859P1 para unicode. Aqui está um link para ODP.NET

Espero que haja suporte para essa codificação no ODP (mas para dizer a verdade nunca verifiquei isso, é apenas uma sugestão)

2) Solução alternativa:no Dataset, você deve criar um campo binário (mapeado para o campo da tabela original) e um campo String (não mapeado para o banco de dados). Ao carregar dados no conjunto de dados, itere para cada linha e execute a conversão de matriz binária para string.

O código deve ser algo assim
Encoding e = Encoding.GetEncoding("iso-8859-1");
foreach(DataRow row in dataset.Tables["MyTable"])
{
    if (!row.IsNull("MyByteArrayField"))
        row["MyStringField"] = e.GetString((row["MyByteArrayField"] as byte[]));
}