Některé znaky ve znakové sadě WE8ISO8859P1 mají jinou binární reprezentaci než stejný znak v UTF8.
Navrhuji 2 možné způsoby
1) Zkuste použít nativní poskytovatele dat Oracle pro .NET (ODP.NET). Může se stát, že v knihovně Microsoft System.Data.OracleClient je chyba/funkce, že tento adaptér automaticky nepodporuje převod WE8ISO8859P1 na unicode. Zde je odkaz na ODP.NET
Doufám, že v ODP bude podpora pro toto kódování (ale abych řekl pravdu, nikdy jsem to nekontroloval, je to pouze návrh)
2) Řešení:v Datasetu byste měli vytvořit binární pole (namapované na původní pole tabulky) a pole String (nenamapované na databázi). Když načtete data do datové sady, iterujte pro každý řádek a proveďte převod z binárního pole na řetězec.
Kód by měl být něco takového
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[]));
}