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