2011-08-18 6 views
15

संभव डुप्लिकेट:
Changing default encoding of python?पायथन में डिफ़ॉल्ट एन्कोडिंग कैसे सेट करें (setdefaultencoding() फ़ंक्शन मौजूद नहीं है)?

मैं अजगर में गोता पढ़ रहा हूँ और यह अध्याय XML पार्स में अजगर के डिफ़ॉल्ट एन्कोडिंग स्कीम की स्थापना का उल्लेख।

setdefaultencodingअजगर से स्थापित-निर्देशिका/साइट-संकुल में प्रयोग किया जाता है/pyanaconda/sitecustomize.py

import sys 
sys.setdefaultencoding('utf-8') 

लेकिन जब मैं स्क्रिप्ट चलाने, यह उठता है:

AttributeError: 'module' object has no attribute 'setdefaultencoding' 

डिफ़ॉल्ट एन्कोडिंग कैसे सेट करें, वैसे भी?

मैं अजगर का उपयोग कर रहा 2,7

समाधान: अजगर स्थापना में site.py पाते हैं।

संपादित setencoding समारोह

def setencoding(): 
    encoding = "ascii" 
    if 0: 
     import locale 
     loc = locale.getdefaultlocale() 
     if loc[1]: 
      encoding = loc[1] 
    if 0: #changes comes here, change 0 to 1 
     encoding = "undefined" #the encoding you want 
    if encoding != "ascii": 
     sys.setdefaultencoding(encoding) 

मैं अजगर 2.7

उत्तर

8

पायथन के sys मॉड्यूल अजगर 2.0 के बाद से एक setdefaultencoding समारोह किया गया है का उपयोग कर रहा हूँ। हालांकि,

यह फ़ंक्शन केवल साइट मॉड्यूल कार्यान्वयन और जहां आवश्यक हो, साइट अनुकूलित द्वारा उपयोग किया जाना है। एक बार साइट मॉड्यूल द्वारा उपयोग किए जाने पर, इसे sys मॉड्यूल के नामस्थान से हटा दिया जाता है।

कम से कम पायथन 2.1 पर वापस दस्तावेज़ यह इंगित करते हैं कि यह इस विधि का उपयोग करने के लिए PyAnaconda के लिए कभी भी उचित नहीं था, और मुझे यकीन नहीं है कि यह कभी क्यों काम करता है।

6

डिफ़ॉल्ट एन्कोडिंग कैसे सेट करें, वैसे भी? फ़ाइल sitecustomize.py, जो sys.path में होना चाहिए में

भागो sys.setdefaultencoding (जैसे lib/साइट-संकुल) जब अजगर शुरू होता है। आप sys.getdefaultencoding के साथ परिवर्तन को सत्यापित कर सकते हैं। अनाम downvoter के लिए


संपादित करें:

जो कोई भी इस जवाब downvoted, आप को समझाने के लिए परवाह है? यह प्रश्न केवल Python 2.x के लिए है। यदि आपकी समस्या है तो Python 3 में sys.setdefaultencoding नहीं है। यदि मैं पाइथन 2 में चाहता हूं तो इस फ़ंक्शन का उपयोग करने के तरीके के बारे में मेरी व्याख्या से मैं खड़ा हूं। मैं इसका उपयोग नहीं कर रहा था या इसके उपयोग की सिफारिश नहीं कर रहा था। लाइब्रेरी को इसे कभी छूना नहीं चाहिए, यही कारण है कि इसे साइट पर और 0cनेमस्पेस से हटा दिया गया है और sitecustomize.py को कॉल करने का मौका है।एक लाइब्रेरी को यह भी मानना ​​चाहिए कि डिफ़ॉल्ट एन्कोडिंग 2.x में ASCII है। यह प्रणाली पर निर्भर है। व्यक्तिगत रूप से मैं इसे ASCII के रूप में छोड़ देता हूं।

+0

ऐसा लगता है कि sys मॉड्यूल में setdefaultencoding फ़ंक्शन नहीं है। मैंने पथ शामिल किया है जिसमें sitecustomize.py है। जब मैंने स्क्रिप्ट चलायी, तो यह अभी भी वही त्रुटि उठाता है। – xiaohan2012

+0

मुझे मिले सभी विकल्पों में से, यह वह जवाब है जो मेरे लिए काम करता है। मैंने बस सामग्री के साथ 'sitecustomize.py' फ़ाइल बनाई है। मैं virtualenvwrapper का उपयोग कर रहा हूं इसलिए मैंने फ़ाइल को 'virtualenvs/virtualenv-name/lib/python2.7/'में क्रमित किया, जहां _virtualenv-name_ रिलीज वर्चुअलएन्व का नाम है। फिर भी, 'sitecustomize.py' का पता लगाएं आपको बता सकता है कि फ़ाइल कहां है। – kiril

संबंधित मुद्दे