मैं एक आने वाली बाइट स्ट्रिंग को परिवर्तित करने की कोशिश कर रहा हूं जिसमें वैध यूटीएफ -8 स्ट्रिंग में गैर-असीसी वर्ण शामिल हैं जैसे कि मैं डंप कर सकता हूं।पायथन बाइट स्ट्रिंग एन्कोड और डीकोड
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal not in range(128)
मेरी स्थिति, 'बी' में गूगल प्रोटोकॉल बफ़र्स के माध्यम से mysql से आ रही है और साथ बाहर भर जाता है:
b = '\x80'
u8 = b.encode('utf-8')
j = json.dumps(u8)
मैं j '\ xC2 \ x80' होने का लेकिन इसके बजाय मैं उम्मीद कुछ ब्लॉब डेटा।
कोई विचार?
संपादित करें: मेरे पास ईथरनेट फ्रेम हैं जो एक ब्लॉब के रूप में एक MySQL तालिका में संग्रहीत हैं (कृपया, हर कोई, विषय पर रहें और चर्चा करें कि तालिका में पैकेट क्यों हैं)। टेबल collation utf-8 है और डीबी परत (sqlalchemy, non-orm) डेटा को पकड़ रहा है और structs (google प्रोटोकॉल बफर) बना रहा है जो ब्लॉब को पायथन 'str' के रूप में संग्रहीत करता है। कुछ मामलों में मैं सीधे किसी भी मुद्दे के साथ प्रोटोकॉल बफर का उपयोग करता हूं। अन्य मामलों में, मुझे जेसन के माध्यम से उसी डेटा का पर्दाफाश करने की आवश्यकता है। मैंने जो देखा वह यह है कि जब json.dumps() इसकी बात करता है, '\ x80' को अमान्य यूनिकोड char (\ ufffd iirc)
आपको एक कोड स्निपेट देना होगा जो दिखाता है कि "किसी भी मुद्दे के बिना सीधे प्रोटोकॉल बफर का उपयोग करें" का अर्थ है। आपको 'json.dumps' उत्पादन \ ufffd बनाने के लिए प्रोटोकॉल बफर के साथ क्या करते हैं, कोड कोड स्निपेट के साथ दिखाना होगा। आपको मूल पैकेट को पुनर्प्राप्त करने के लिए इस JSONised पैकेट के उपभोक्ता को वास्तव में क्या कहना है, यह कहने की आवश्यकता है। –