Vissa tecken i teckenuppsättningen WE8ISO8859P1 har en annan binär representation än samma tecken i UTF8.
Det jag föreslår är två möjliga sätt
1) Försök att använda Oracles inhemska dataleverantörer för .NET (ODP.NET). Det kan vara en bugg/funktion i Microsofts bibliotek System.Data.OracleClient som denna adapter inte automatiskt stöder konvertering av WE8ISO8859P1 till unicode. Här är en länk till ODP.NET
Jag hoppas att det kommer att finnas stöd för denna kodning i ODP (men för att säga sant, jag har aldrig kontrollerat detta, det är bara ett förslag)
2) Lösning:i Dataset bör du skapa ett binärt fält (mappat till det ursprungliga tabellfältet) och ett strängfält (ej mappat till databasen). När du laddar data till datasetet, iterera för varje rad och utför konvertering från binär array till sträng.
Koden borde vara ungefär så här
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[]));
}