मैं कन्वर्ट करने में सक्षम नहीं हूँ
"Schutztxc3xbcren".encode("utf-8")
यूनिकोड के लिए निम्नलिखित, लेकिन त्रुटि नहीं मिल रही है
यूनिकोडडेकोड त्रुटि: "ascii" कोडेक स्थिति 7 में बाइट 0xc3 को डीकोड नहीं कर सकता है: क्रमशः श्रेणी में नहीं (128)
मैं लेना चाहता हूँ
"Schutztüren"
नतीजतन।
उत्तर:
जवाब के लिए 2 № 1आपकी स्ट्रिंग पहले से ही है utf-8
। आपको व्याख्या करना पाइथन के अंदर इसका उपयोग करने के लिए यूनिकोड पर:
print "Schutztxc3xbcren".decode("utf-8")
लेकिन आपको एक बड़ी समस्या है: आप स्पष्ट रूप से पायथन 2 का उपयोग कर रहे हैं 2. तुरंत पायथन 3 पर स्विच करें, चरित्र एन्कोडिंग को संभालने के लिए पाइथन 2 दृष्टिकोण को समझने की कोशिश करने के लिए पागल होने का कोई कारण नहीं है। पायथन 3 पर स्विच करें और आपको दिन में कई बार अपने डेस्क के खिलाफ अपने सिर को धक्का नहीं देना पड़ेगा। (ध्यान दें कि यद्यपि आप कॉल कर रहे थे encode()
विधि, आपको एक मिला है
UnicodeDecodeError
.
एक सरल स्पष्टीकरण:
- पायथन में,
unicode
तथाutf-8
अलग-अलग चीजें हैं एstr
पायथन 2 में हो सकता है"utf-8"
एन्कोडिंग,unicode
वस्तुओं में कोई एन्कोडिंग नहीं है। - यदि आप एक का उपयोग करने की कोशिश करते हैं
str
जिसकी आवश्यकता है उसके लिएunicode
(उदाहरण के लिए, करने के लिएencode()
यह), या इसके विपरीत, पायथन 2 इसे पहले रूपांतरित करने की कोशिश करेगा। सिवाय इसके कि यह आपके तारों के एन्कोडिंग को नहीं जानता है, इसलिए यह अनुमान लगाता है (ascii
, आपके मामले में)। उफ़। - पायथन 2 में बहुत सारे अंतर्निहित रूपांतरण हैं।
लेकिन वास्तव में कारण सरल है: आप पायथन 3 का उपयोग नहीं कर रहे हैं।
संपादित करें: चूंकि पाइथन 3 एक विकल्प नहीं है, यहां कुछ व्यावहारिक सलाह दी गई है:
यूनिकोड सैंडविच: जैसे ही इसे पढ़ा जाता है, साथ ही काम करने के लिए सभी पाठ यूनिकोड में कनवर्ट करें
unicode
स्ट्रिंग्स और एक utf8 पर वापस एन्कोड करेंstr
केवल इसे फिर से लिखने के लिए।पांडों को अभी भी समर्थन देना चाहिए
encoding
तर्कto_csv()
, यहां तक कि पायथन 2 पर भी। अपनी फाइलें लिखने के लिए इसका इस्तेमाल करेंutf8
.फ़ाइल को सीधे पढ़ने के लिए, उपयोग करें
codecs.open()
सादे के बजायopen()
फ़ाइलों को पढ़ने के लिए। यह स्वीकार करता हैencoding=
तर्क और आपको दे देंगेunicode
तार।
उत्तर № 2 के लिए 1
आपको उपयोग करने की ज़रूरत है decode
utf-8 एन्कोडेड स्ट्रिंग को इसके बजाय यूनिकोड में।
"Schutztxc3xbcren".decode("utf-8")
जवाब के लिए 0 № 3
पायथन 3 में आपको "जरूरत है decode
the bytes
जो आपके एंकोडेड स्ट्रिंग हैं:
b"Schutztxc3xbcren".decode("utf-8")
अजगर 2 में b
आवश्यक नहीं है (यहां बाइट्स और तार के बीच अंतर कम सख्त है...) ।