मैंSQLAlchemy और UnicodeDecodeError
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
हो रही है जब मैं पाठ एक MySQL डेटाबेस है, जो मैं SQLAlchemy का उपयोग कर रहा हूँ तक पहुँचने से आ रही गुजरती हैं, यह कार्य करने के लिए:
re.compile(ur"<([^>]+)>", flags=re.UNICODE).sub(u" ", s)
डेटाबेस एनकोडिंग utf है -8 और मैं एसक्यूएलकेमी के create_engine फ़ंक्शन में एन्कोडिंग भी पास कर रहा हूं।
संपादित करें: यह मैं कैसे डेटाबेस से क्वेरी कर रहा हूँ:
doc = session.query(Document).get(doc_id)
s = doc.title
सुझाव, मैं s.decode पारित कर दिया ('utf-8') sub
करने के लिए। त्रुटि ऊपर गायब हो गया है, लेकिन मैं एक अलग दस्तावेज़ के लिए एक अलग त्रुटि मिलती है:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xeb in position 449: invalid continuation byte
डेटाबेस तालिका इस तरह परिभाषित किया गया है:
CREATE TABLE `articles` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`cdate` datetime DEFAULT NULL,
`link` varchar(255) DEFAULT NULL,
`content` text,
UNIQUE KEY `id` (`id`),
UNIQUE KEY `link_idx` (`link`)
) ENGINE=InnoDB AUTO_INCREMENT=4127834 DEFAULT CHARSET=utf8;
किसी भी मदद होगी बहुत सराहना
क्या हम कुछ और कोड देख सकते हैं? कहां से आया है? क्या होगा decode ('utf8') 'चीजों को ठीक करें? –
@MartijnPieters s.decode ('utf-8') जोड़कर उस विशेष दस्तावेज़ के लिए त्रुटि को हल करता है, लेकिन यदि मैं डेटाबेस से एक अलग दस्तावेज़ प्राप्त करने का प्रयास करता हूं तो मुझे मिलता है: यूनिकोड डीकोड त्रुटि: 'utf8' कोडेक बाइट 0xeb को डीकोड नहीं कर सकता स्थिति 44 9: अवैध निरंतर बाइट। तो, एक ही त्रुटि, अलग चरित्र। – user1491915
नहीं, यह एक अलग त्रुटि है (एसीआईआई से एक डीकोड, दूसरा यूटीएफ -8 से)। इसका मतलब है कि दूसरा दस्तावेज़ यूटीएफ -8 डेटा * बिल्कुल नहीं है *। यही कारण है कि हम देखना चाहते हैं कि कहां से आता है। –