पायथन प्रोग्राम के आउटपुट को पाइप करते समय, पायथन दुभाषिया एन्कोडिंग के बारे में भ्रमित हो जाता है और इसे किसी पर सेट नहीं करता है। इसका मतलब इस तरह से एक कार्यक्रम है:
# -*- coding: utf-8 -*-
print u"åäö"
सामान्य रूप से चलने पर ठीक काम करेगा, लेकिन इसके साथ विफल:
यूनिकोडेनाकोड: 'एससीआई' कोडक चरित्र u '\ xa0 को स्थिति 0 में सांकेतिक शब्दों में बदलना नहीं कर सकता है: क्रम में नहीं (128)
जब एक पाइप अनुक्रम में उपयोग किया जाता है।
पाइपिंग करते समय यह काम करने का सबसे अच्छा तरीका क्या है? क्या मैं इसे केवल शेल / फाइलसिस्टम एन्कोडिंग का उपयोग करने के लिए कह सकता हूं / जो कुछ भी उपयोग कर रहा है?
इस प्रकार अब तक मैंने जो सुझाव देखे हैं, वे सीधे आपके साइट-थ्रू को संशोधित करना है, या इस हैक का उपयोग करके डिफॉल्टेंकोडिंग को हार्डकोड करना है:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
क्या पाइपिंग का काम करने का एक बेहतर तरीका है?
chcp 65001
अपनी स्क्रिप्ट निष्पादित करने से पहले भी चला सकते हैं । इसके मुद्दे हो सकते हैं, लेकिन यह अक्सर मदद करता है, और इसके लिए बहुत अधिक टाइपिंग (कम से कम set PYTHONIOENCODING=utf_8
) की आवश्यकता नहीं होती है ।
setx PYTHONENCODING utf-8
यदि आप टाइपिंग को सहेजना चाहते हैं, तो इसे स्थायी बनाने का प्रयास करें।