2011-02-10 16 views
14

मैं पता लगाना क्रम में यह प्रदर्शित करने के लिए एक स्ट्रिंग में डेटा है कि एक एसक्यूएल सर्वर तालिका स्तंभ के रूप में varbinary (अधिकतम) सेट किया गया है से आता है कन्वर्ट करने के लिए कैसे मदद की जरूरत एक लेबल।परिवर्तित एसक्यूएल सर्वर varbinary डेटा

यह सी # में है और मैं एक DataReader उपयोग कर रहा हूँ।

मैं का उपयोग करने में डेटा खींच सकते हैं:

var BinaryString = reader[1]; 

मुझे पता है कि इस स्तंभ पाठ है कि पहले बाइनरी में कनवर्ट किया गया था आयोजित करता है।

उत्तर

30

यह वास्तव में निर्भर करता है जिस पर एन्कोडिंग जब आप मूल रूप से बाइनरी स्ट्रिंग से परिवर्तित इस्तेमाल किया गया था:

byte[] binaryString = (byte[])reader[1]; 

// if the original encoding was ASCII 
string x = Encoding.ASCII.GetString(binaryString); 

// if the original encoding was UTF-8 
string y = Encoding.UTF8.GetString(binaryString); 

// if the original encoding was UTF-16 
string z = Encoding.Unicode.GetString(binaryString); 

// etc 
+1

बाइट [] बाइनरीस्ट्रिंग = पाठक [1]; मुझे एक त्रुटि देता है ** निश्चित रूप से प्रकार 'ऑब्जेक्ट' को 'बाइट []' में परिवर्तित नहीं कर सकता। एक स्पष्ट रूपांतरण मौजूद है ... ** – PercivalMcGullicuddy

+0

@ क्रोनप्रिंज़: ओह, हाँ, इसे एक स्पष्ट कलाकार की आवश्यकता है। मैंने इसे शामिल करने के लिए अभी जवाब संपादित किया है। – LukeH

+1

आप इस उत्तर को सही के रूप में स्वीकार कर सकते हैं। यह बाद में सही समाधान खोजने के लिए अन्य लोगों की मदद कर सकता है। –

2

आप को पता है कि एन्कोडिंग द्विआधारी बनाने के लिए इस्तेमाल किया गया था की जरूरत है। फिर आप

System.Text.Encoding.UTF8.GetString(reader[1]); 

और जो भी एन्कोडिंग का उपयोग किया गया था, उसके लिए यूटीएफ 8 बदलें।

7

द्विआधारी डेटा को एन्कोडेड टेक्स्ट होना चाहिए - और आपको यह जानने की आवश्यकता है कि इसे सटीक रूप से टेक्स्ट में परिवर्तित करने के लिए कौन सी एन्कोडिंग का उपयोग किया गया था। उदाहरण के लिए, आप उपयोग कर सकते हैं:

byte[] binaryData = reader[1]; 
string text = Encoding.UTF8.GetString(binaryData); 

या

byte[] binaryData = reader[1]; 
string text = Encoding.Unicode.GetString(binaryData); 

या विभिन्न अन्य विकल्प हैं ... लेकिन आप जरूरत सही एन्कोडिंग पता करने के लिए। अन्यथा यह एक छवि दर्शक में एक जेपीईजी फ़ाइल लोड करने की कोशिश करना है जो केवल पीएनजी पढ़ता है ... लेकिन बदतर, क्योंकि अगर आपको गलत एन्कोडिंग मिलती है तो यह कुछ स्ट्रिंग्स के लिए काम करने के लिए दिखाई दे सकता है।

काम करने की अगली बात यह है कि इसे पहली जगह बाइनरी के रूप में क्यों संग्रहीत किया जा रहा है ... यदि यह टेक्स्ट होना है, तो इसे इस तरह क्यों संग्रहीत नहीं किया जा रहा है।

संबंधित मुद्दे