/ / यूनिकोड के लिए ascii बदलें - पायथन, utf-8

यूनिकोड को पाइथन, यूटीएफ -8 में बदलें

मैं कन्वर्ट करने में सक्षम नहीं हूँ

"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 एक विकल्प नहीं है, यहां कुछ व्यावहारिक सलाह दी गई है:

  1. यूनिकोड सैंडविच: जैसे ही इसे पढ़ा जाता है, साथ ही काम करने के लिए सभी पाठ यूनिकोड में कनवर्ट करें unicode स्ट्रिंग्स और एक utf8 पर वापस एन्कोड करें str केवल इसे फिर से लिखने के लिए।

  2. पांडों को अभी भी समर्थन देना चाहिए encoding तर्क to_csv(), यहां तक ​​कि पायथन 2 पर भी। अपनी फाइलें लिखने के लिए इसका इस्तेमाल करें utf8.

  3. फ़ाइल को सीधे पढ़ने के लिए, उपयोग करें 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 आवश्यक नहीं है (यहां बाइट्स और तार के बीच अंतर कम सख्त है...) ।