WE8ISO8859P1文字セットの特定の文字は、UTF8の同じ文字とは異なるバイナリ表現を持っています。
私が提案するのは2つの可能な方法です
1).NET用のOracleネイティブデータプロバイダー(ODP.NET)を使用してみてください。 MicrosoftのライブラリSystem.Data.OracleClientに、このアダプタがWE8ISO8859P1からUnicodeへの変換を自動的にサポートしないというバグ/機能がある可能性があります。 ここに、ODP.NETへのリンクがあります
ODPでこのエンコーディングがサポートされることを願っています(ただし、これを確認したことはありません。これは単なる提案です)
2)回避策:データセットで、バイナリフィールド(元のテーブルフィールドにマップされている)と文字列フィールド(データベースにマップされていない)を作成する必要があります。データセットにデータをロードするときは、行ごとに繰り返し、バイナリ配列から文字列への変換を実行します。
コードは次のようになります
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[]));
}