निर्दिष्ट करने के लिए कैसे, मैं जब मानक इनपुट से UTF-8 पाठ पढ़ने इस समस्या में पड़। अजगर 2 में, यह ठीक काम करता है:अजगर 3: अजगर 2 से कोड पोर्टिंग जबकि अजगर से 3 stdin एन्कोडिंग
for line in sys.stdin:
...
लेकिन अजगर 3 उम्मीद से ASCII sys.stdin, और अगर वहाँ इनपुट में गैर- ASCII वर्ण हैं, मैं त्रुटि मिलती है:
UnicodeDecodeError: 'ascii' codec can't decode byte .. in position ..: ordinal not in range(128)
एक नियमित रूप से फ़ाइल के लिए, मैं एन्कोडिंग जब फ़ाइल खोलने में निर्दिष्ट करना होगा:
with open('filename', 'r', encoding='utf-8') as file:
for line in file:
...
लेकिन यह कैसे मैं मानक इनपुट के लिए एन्कोडिंग निर्दिष्ट कर सकते हैं? अन्य एसओ पदों ने
input_stream = codecs.getreader('utf-8')(sys.stdin)
for line in input_stream:
...
हालांकि, यह पायथन 3 में काम नहीं करता है। मुझे अभी भी एक ही त्रुटि संदेश मिलता है। मैं उबंटू 12.04.2 का उपयोग कर रहा हूं और मेरा लोकेल en_US.UTF-8 पर सेट है।
धन्यवाद, इस चाल किया! –
python2.6 के लिए निकटतम समतुल्य क्या है? – bukzor
@bukzor: अगला विकल्प: फ़ाइल डिस्क्रिप्टर को सीधे 'io.open() 'के साथ खोलें; '0'' stdin' है: 'io.open (0) '' TextIOWrapper() 'ऑब्जेक्ट देता है। –