WE8ISO8859P1 वर्ण सेट में कुछ वर्णों का UTF8 में समान वर्ण से भिन्न बाइनरी प्रतिनिधित्व है।
मैं जो सुझाव देता हूं वह 2 संभावित तरीके हैं
1) .NET (ODP.NET) के लिए Oracle देशी डेटा प्रदाताओं का उपयोग करने का प्रयास करें। हो सकता है कि Microsoft की लाइब्रेरी System.Data.OracleClient में एक बग/फीचर हो कि यह एडेप्टर WE8ISO8859P1 को यूनिकोड में बदलने का स्वचालित रूप से समर्थन नहीं करता है। यहां ODP.NET का लिंक दिया गया है
मुझे उम्मीद है कि ओडीपी में इस एन्कोडिंग के लिए एक समर्थन होगा (लेकिन सच कहूं तो मैंने इसे कभी चेक नहीं किया, यह केवल एक सुझाव है)
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[]));
}