Oracle
 sql >> Database >  >> RDS >> Oracle

Problemi nell'utilizzo/visualizzazione di caratteri speciali da Oracle db nell'app .Net

Alcuni caratteri nel set di caratteri WE8ISO8859P1 hanno una rappresentazione binaria diversa rispetto allo stesso carattere in UTF8.

Quello che suggerisco sono 2 possibili modi

1) Prova a utilizzare i provider di dati nativi Oracle per .NET (ODP.NET). Potrebbe esserci un bug/una funzionalità nella libreria di Microsoft System.Data.OracleClient che questo adattatore non supporta automaticamente la conversione di WE8ISO8859P1 in unicode. Ecco un collegamento a ODP.NET

Spero che ci sia un supporto per questa codifica in ODP (ma a dire il vero non l'ho mai verificato, è solo un suggerimento)

2) Soluzione alternativa:in Dataset, è necessario creare un campo binario (associato al campo della tabella originale) e un campo String (non mappato al database). Quando carichi i dati nel set di dati, esegui l'iterazione per ogni riga ed esegui la conversione da array binario a stringa.

Il codice dovrebbe essere qualcosa del genere

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[]));
}