मुझे पथ चर के एन्कोडिंग और इसे SQLite डेटाबेस में डालने की समस्या है। मैंने इसे एनकोड ("utf-8") फ़ंक्शन के साथ हल करने की कोशिश की, जिसने मदद नहीं की। फिर मैंने यूनिकोड () फ़ंक्शन का उपयोग किया जो मुझे यूनिकोड टाइप करता है ।
print type(path) # <type 'unicode'>
path = path.replace("one", "two") # <type 'str'>
path = path.encode("utf-8") # <type 'str'> strange
path = unicode(path) # <type 'unicode'>
अंत में मैं प्राप्त यूनिकोड प्रकार है, लेकिन मैं अब भी वही त्रुटि जो मौजूद था जब के प्रकार है पथ चर था str
sqlite3.ProgrammingError: जब तक आप एक text_factory का उपयोग नहीं करते हैं, तब तक 8-बिट बायस्ट्रेस का उपयोग नहीं करना चाहिए, जो 8-बिट बायस्ट्रेस (जैसे text_factory = str) की व्याख्या कर सकता है। यह अत्यधिक अनुशंसा की जाती है कि आप केवल यूनिकोड स्ट्रिंग्स के लिए अपने आवेदन को स्विच करें।
क्या आप मुझे इस त्रुटि को हल करने encode("utf-8")
और unicode()
कार्यों के सही उपयोग की व्याख्या करने में मदद कर सकते हैं ? मैं अक्सर इसके साथ लड़ रहा हूं।
संपादित करें:
इस निष्पादन () कथन में त्रुटि आई:
cur.execute("update docs set path = :fullFilePath where path = :path", locals())
मैं FullFilePath चर के एन्कोडिंग को बदलना भूल गया, जो एक ही समस्या से ग्रस्त है, लेकिन अब मैं काफी उलझन में हूं। क्या मुझे केवल यूनिकोड () या एनकोड ("utf-8") या दोनों का उपयोग करना चाहिए ?
मैं उपयोग नहीं कर सकता
fullFilePath = unicode(fullFilePath.encode("utf-8"))
क्योंकि यह इस त्रुटि को उठाता है:
यूनिकोडडॉफॉर्सेट: 'एससीआई' कोडक 0x5 को स्थिति 32 में बाइट डिकोड नहीं कर सकता है: क्रमिक सीमा में नहीं (128)
पायथन संस्करण 2.7.2 है