मैं एक उत्पादन प्रणाली है, जो मैं एक विकास के वातावरण में पुन: पेश करने में विफल में कोई त्रुटि मिलती है:यूनिकोड एन्कोडररर को पुन: पेश करने के लिए कैसे?
with io.open(file_name, 'wt') as fd:
fd.write(data)
अपवाद:
File "/home/.../foo.py", line 18, in foo
fd.write(data)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 6400: ordinal not in range(128)
मैं पहले से ही करने की कोशिश की लेकिन चर में अजीब पात्रों में से एक बहुत कुछ data
।
लेकिन अब तक मैं UnicodeEncodeError
को पुन: उत्पन्न करने में सक्षम नहीं था।
UnicodeEncodeError
प्राप्त करने के लिए data
में क्या होना चाहिए?
अद्यतन
python -c 'import locale; print locale.getpreferredencoding()'
UTF-8
Update2
अगर मैं खोल के माध्यम से और वेब अनुरोध के माध्यम से locale.getpreferredencoding()
फोन, एन्कोडिंग "UTF-8" है।
मैंने अपने कोड में अपना अपवाद हैंडलिंग अपडेट किया और कुछ दिनों से getpreferredencoding()
लॉग किया। अब यह फिर से हुआ (अब तक मैं इसे मजबूर या पुन: उत्पन्न करने में सक्षम नहीं हूं), और एन्कोडिंग "ANSI_X3.4-1968" है!
मैं कोई सुराग नहीं है जहां इस एन्कोडिंग सेट हो जाता है ....
यह एक अलग दिशा में मेरी समस्या डालता है। इस सवाल को बेकार छोड़ना। मेरी समस्या अब है: पसंदीदा एन्कोडिंग कहां बदल जाती है? लेकिन यह इस सवाल का हिस्सा नहीं है।
एक बड़ा, धन्यवाद सभी के लिए जो
तुम्हें पता है, किसी भी अधिक जानकारी हमें आपकी समस्या को पुनः (आप जानते हैं, एक [MCVE]), वहाँ कोई अन्य जवाब हैं देने के लिए देता है कि बिना। मुझे अत्यधिक संदेह है कि * केवल आपके द्वारा दिखाए गए कोड के साथ * 'locale.getpreferredencoding()' वास्तव में यूटीएफ -8 * है जब आप उस त्रुटि को दबाते हैं *। –
आप फ़ाइल के लिए चुने गए एन्कोडिंग को भी देख सकते हैं; 'io.TextIOWrapper' में 'एन्कोडिंग' विशेषता है। यह इस विशिष्ट मामले में ASCII पर सेट किया जाएगा। –