Някои символи в набора от символи WE8ISO8859P1 имат различно двоично представяне от същия знак в UTF8.
Предлагам 2 възможни начина
1) Опитайте да използвате собствени доставчици на данни на Oracle за .NET (ODP.NET). Възможно е да има грешка/функция в библиотеката на Microsoft System.Data.OracleClient, че този адаптер не поддържа автоматично конвертиране на WE8ISO8859P1 в unicode. Ето връзка към ODP.NET
Надявам се, че ще има поддръжка за това кодиране в ODP (но вярно, никога не съм проверявал това, това е само предложение)
2) Заобиколно решение:в набор от данни трябва да създадете двоично поле (съпоставено към полето на оригиналната таблица) и поле String (което не е съпоставено с базата данни). Когато зареждате данни в набора от данни, повторете за всеки ред и извършете преобразуване от двоичен масив в низ.
Кодът трябва да бъде нещо подобно
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[]));
}