है, मैं फ़ाइलों, स्ट्रीम और विभिन्न कोडपृष्ठों के लिए काफी नया हूं। यह मेरी समस्या है:सी #: कैसे पता लगाएं कि मेरे पास सही एन्कोडिंग
मुझे टेक्स्ट फाइलें मिलती हैं और उनमें से कुछ कोडपेज विंडोज -1252 के साथ बनाई गई हैं, कुछ अभी भी आईबीएम 850 हैं और कभी-कभी वे यूटीएफ 8 हैं। जब मैं उन्हें आयात करता हूं, तो मेरा डेटाबेस ä, ö, ü, ß के लिए सभी प्रकार के प्रतीकों को दिखाता है, क्योंकि मैंने उन्हें गलत कोडपृष्ठ के साथ पढ़ा है। केवल जब मैं उन्हें सही कोडपेज के साथ आयात करता हूं, तो सब कुछ ठीक काम करता है।
यह मैं क्या सोचा था सकता है एक अच्छा दृष्टिकोण होगा है: एक कोडपेज के साथ बाइट्स सरणी
Convert ä, ö, ü, ß एक्स
जैसे:
byte[] myAeKl = Encoding.GetEncoding("IBM850").GetBytes("ä");
byte[] myAeGr = Encoding.GetEncoding("IBM850").GetBytes("Ä");
के माध्यम से जाना टेक्स्ट फाइलें और उपरोक्त वाले प्रत्येक अक्षर बाइट सरणी की तुलना करें। यदि पाया गया कि कोड कोड का उपयोग करें, अन्यथा कोई अन्य कोडपृष्ठ आज़माएं।
यह वही है जो मुझे समझ में नहीं आता है: मैं टेक्स्टफाइल में अक्षरों से बाइट्स की तुलना कैसे कर सकता हूं, जिन अक्षरों को मैं ढूंढ रहा हूं। उदाहरण के लिए:
if (Textfile.Letter == myAeKl || Textfile.Letter == myAeGr)
...
वहाँ सही कोड पृष्ठ पर प्राप्त करने के लिए किसी भी अन्य रास्ता नहीं है? क्या मुझे समाधान के लिए सही दृष्टिकोण है?
हाय, आपके त्वरित उत्तर के लिए धन्यवाद। अच्छी तरह से समस्या यह है कि फाइलें बड़ी हो सकती हैं और आयात समय के बारे में निश्चित समय लेता है और सबसे बड़ी समस्या मैं आयात नहीं करता हूं। मैं बस इसे प्रोग्राम करने के लिए मिलता हूं :) ग्रीटज़ – Phenix
"अगर मुझे सामना करना पड़ता है" प्रोग्रामेटिक रूप से था। –