अपडेट: अजगर 3.6 औजार पीईपी 528: UTF-8 के लिए Windows बदलें एन्कोडिंग कंसोल : विंडोज पर डिफ़ॉल्ट सांत्वना अब सभी यूनिकोड वर्ण को स्वीकार करेंगे। आंतरिक रूप से, यह रूप में एक ही यूनिकोड API का उपयोग करता पैकेज नीचे उल्लेख । बस अब काम करना चाहिए।win-unicode-consoleprint(unicode_string)
मुझे एक UnicodeEncodeError: 'charmap' codec can't encode character... त्रुटि मिलती है ।
त्रुटि का मतलब है कि यूनिकोड वर्ण जिसे आप प्रिंट करने का प्रयास कर रहे हैं, उन्हें वर्तमान ( chcp) कंसोल वर्ण एन्कोडिंग का उपयोग करके नहीं दिखाया जा सकता है । कोडपेज अक्सर 8-बिट एन्कोडिंग होता है जो cp437कि ~ 1M यूनिकोड वर्णों से केवल ~ 0x100 वर्णों का प्रतिनिधित्व कर सकता है:
>>> u "\ N {यूरो हस्ताक्षर}"। सांकेतिक शब्दों में बदलना ('cp437')
ट्रेसबैक (सबसे हालिया कॉल अंतिम):
...
यूनिकोडेनाकोड: 'चार्मैप' कोडक 0 में स्थिति '\ u20ac' को कूटबद्ध नहीं कर सकता है:
चरित्र नक्शे के लिए
मुझे लगता है कि यह इसलिए है क्योंकि विंडोज कंसोल यूनिकोड-केवल वर्णों को स्वीकार नहीं करता है। इसके आसपास सबसे अच्छा तरीका क्या है?
Windows कंसोल यूनिकोड वर्णों को स्वीकार करता है और यदि संगत फ़ॉन्ट कॉन्फ़िगर किया गया है तो यह उन्हें (BMP केवल) भी प्रदर्शित कर सकता है । WriteConsoleW()एपीआई का उपयोग @Daira हॉपवुड के जवाब में सुझाव के रूप में किया जाना चाहिए । इसे पारदर्शी रूप से कहा जा सकता है, अगर आपको win-unicode-consoleपैकेज का उपयोग करने की आवश्यकता नहीं है और आपको अपनी स्क्रिप्ट को संशोधित नहीं करना चाहिए :
T:\> py -mpip install win-unicode-console
T:\> py -mrun your_script.py
देखें कि पायथन 3.4, यूनिकोड, विभिन्न भाषाओं और विंडोज के साथ क्या डील हुई है?
क्या कोई तरीका है जिससे मैं पायथन ?को इस स्थिति में विफल होने के बजाय स्वचालित रूप से प्रिंट कर सकता हूं ?
यदि यह ?आपके मामले में सभी अयोग्य पात्रों को बदलने के लिए पर्याप्त है तो आप PYTHONIOENCODINGenvvar सेट कर सकते हैं :
T:\> set PYTHONIOENCODING=:replace
T:\> python3 -c "print(u'[\N{EURO SIGN}]')"
[?]
पायथन 3.6+ में, PYTHONIOENCODINGएन्वार द्वारा निर्दिष्ट एन्कोडिंग को इंटरएक्टिव कंसोल बफ़र्स के लिए नजरअंदाज कर दिया जाता है, जब तक कि PYTHONLEGACYWINDOWSIOENCODINGएनवार को गैर-रिक्त स्ट्रिंग पर सेट नहीं किया जाता है।