Niektóre znaki w zestawie znaków WE8ISO8859P1 mają inną reprezentację binarną niż ten sam znak w UTF8.
Proponuję 2 możliwe sposoby
1) Spróbuj użyć rodzimych dostawców danych Oracle dla platformy .NET (ODP.NET). Być może istnieje błąd/funkcja w bibliotece Microsoft System.Data.OracleClient, że ten adapter nie obsługuje automatycznie konwersji WE8ISO8859P1 na Unicode. Oto link do ODP.NET
Mam nadzieję, że będzie wsparcie dla tego kodowania w ODP (ale prawdę mówiąc nigdy tego nie sprawdzałem, to tylko sugestia)
2) Obejście:w zestawie danych należy utworzyć pole binarne (zmapowane do oryginalnego pola tabeli) i pole typu String (niezmapowane do bazy danych). Kiedy ładujesz dane do zbioru danych, wykonaj iterację dla każdego wiersza i konwersji perfrom z tablicy binarnej na łańcuch.
Kod powinien wyglądać mniej więcej tak
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[]));
}