मुझे एमएसएसएलएल में एक डेटाबेस मिला है जिसे मैं SQLite/Django पर पोर्ट कर रहा हूं। मैं डेटाबेस से कनेक्ट करने के लिए pymssql का उपयोग कर रहा हूं और स्थानीय SQLite डेटाबेस में एक टेक्स्ट फ़ील्ड को सहेज रहा हूं।"अवैध" यूनिकोड वर्णों को कनवर्ट या स्ट्रिप करें
हालांकि कुछ पात्रों के लिए, यह विस्फोट हो जाता है। मुझे इस तरह की शिकायतें मिलती हैं:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x97 in position 1916: ordinal not in range(128)
क्या कोई तरीका है कि मैं वर्णों को उचित यूनिकोड संस्करणों में परिवर्तित कर सकता हूं? या उन्हें बाहर पट्टी?
दरअसल, आपको पता होना चाहिए कि आपका टेक्स्ट एन्कोडिंग क्या है। इसके आसपास बहुत कुछ नहीं है। आपके मामले में, सौभाग्य से, आपका त्रुटि संदेश यह स्पष्ट करता है। 0x97 चरित्र की उपस्थिति के कारण, यह लगभग निश्चित शर्त है कि आप माइक्रोसॉफ्ट के कष्टप्रद सीपी 1252 से निपट रहे हैं। लैटिन -1 में, इस कोडपॉइंट में एक नियंत्रण चरित्र होता है, "गारंटीकृत क्षेत्र का अंत" जिसका लगभग कभी उपयोग नहीं किया जाता है। आपको utf-8 के साथ यह सटीक त्रुटि कभी नहीं दिखाई देगी क्योंकि 0x97 मान्य वर्ण-अग्रणी बाइट नहीं है। दूसरी तरफ, सीपी 1252 में, यह बहुत आम है। – jcdyer