2012-04-09 21 views
5

पर इंटरैक्टिव मोड में पायथन में टाइपिंग यूटीएफ -8 वर्ण टाइपिंग मैं इंटरैक्टिव मोड में तारों में कुछ स्पैनिश चरित्र टाइप करने की कोशिश कर रहा हूं। उदाहरण के लिए, 'é' बनाने के लिए option+e e ताकि मैं string="él" जैसे स्टेटमेंट बना सकूं। यह टर्मिनल में काम करता है, लेकिन पायथन में (मैंने जो भी संस्करण स्थापित किया है, जिसमें से मेरे पास कई हैं) यह नहीं है। यह बस कुछ भी पैदा करता है। इसमें पात्रों में पेस्ट करने का प्रयास करना शामिल है। यह वास्तव में this question में वर्णित समस्या है, विशेष रूप से पेस्ट करने और एलेक्स के प्रश्न पर उनकी टिप्पणी में, जहां उन्होंने बताया कि एलेक्स का जवाब यूटीएफ -8 अक्षरों के संबंध में कॉपी/पेस्ट की विफलता के सवाल को संबोधित नहीं करता है। मैं यह कैसे कर सकता हूँ?ओएस-एक्स

+0

वास्तव में क्या आप "पायथन दुभाषिया" मतलब है? मैं पाइथन खोल * टर्मिनल * के माध्यम से उपयोग करता हूं - आप इसे कैसे करते हैं? –

+0

मुझे लगता है कि मेरा मतलब इंटरैक्टिव मोड था। सवाल बदल दिया। –

+0

यह मेरे प्रश्न का उत्तर नहीं देता है। आप इस बात को कैसे प्राप्त कर रहे हैं कि आप "इंटरैक्टिव मोड" कह रहे हैं? –

उत्तर

0

स्ट्रिंग अक्षर से पहले u का उपयोग करें, इसे एक यूनिकोड स्ट्रिंग बनाने के लिए।

string = u"El avión cayó del cielo" 

कि अगर समस्या काम नहीं कर रहा अपने संपादक या टर्मिनल में निहित है, उस मामले में

#coding: utf8 
अपने अजगर कार्यक्रम के पहले 2 लाइनों में से किसी में

जोड़ने का प्रयास करें और यूनिकोड के साथ एक उचित संपादक का उपयोग समर्थन।

+0

पहला सुझाव काम नहीं करता है, मैं चरित्र को सभी को दुभाषिया में इनपुट नहीं कर सकता।मुझे यकीन नहीं है कि दूसरे सुझाव में आपका क्या मतलब है। मैं टर्मिनल ऐप का उपयोग कर रहा हूं जो ओएस-एक्स के साथ आता है और मैं शैल में अक्षर इनपुट कर सकता हूं, लेकिन इंटरैक्टिव मोड में पायथन में नहीं। मैंने 'defaultcustomize.py' में' utf-8 'होने के लिए पहले से ही अपना डिफ़ॉल्ट एन्कोडिंग बदल दिया है। –

+1

डिफ़ॉल्ट एन्कोडिंग सिस्टम चौड़ा बदलना अनुशंसित नहीं है कि यह कुछ पुस्तकालयों को तोड़ सकता है। – KurzedMetal

+0

** ** डिफ़ॉल्ट एन्कोडिंग बदलें नहीं। 'आयात sys क्या करता है; प्रिंट (sys.stdout.encoding) 'कहो? –

3

readline लाइब्रेरी जो पाइथन इंटरैक्टिव इनपुट पढ़ने के लिए उपयोग करता है वह टर्मिनल द्वारा भेजे गए गैर-ASCII वर्णों को स्वीकार नहीं करता है। इसका मतलब है कि या तो आपका टर्मिनल एमुलेटर यूटीएफ -8 एन्कोडिंग में वर्ण प्रदान नहीं करता है, या रीडलाइन यूटीएफ -8 इनपुट स्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है।

सौभाग्य से, bash खोल सहित कई लोकप्रिय कार्यक्रमों द्वारा रीडलाइन का उपयोग किया जाता है, इसलिए इसमें बहुत सारी जानकारी है कि यह कैसे काम कर रहा है। उदाहरण के लिए, from this article:

मैं कैसे UTF-8 इनपुट सही ढंग से काम करने के लिए मिलता है?

  • टर्मिनल निरीक्षक में:
    • अनुकरण अनुभाग में, भागने गैर- ASCII पात्रों विकल्प को बंद।
    • प्रदर्शन अनुभाग में, यूनिकोड (यूटीएफ -8) को वर्ण सेट एन्कोडिंग के रूप में चुनें।
  • अपने .profile:

    export LC_CTYPE=en_US.UTF-8 
    
  • में निम्न पंक्ति जोड़ें अपने .inputrc में निम्नलिखित पंक्तियां जोड़ें:

    set meta-flag on 
    set input-meta on 
    set output-meta on 
    set convert-meta off 
    
  • एक source ~/.profile और एक source ~/.inputrc करके परिवर्तन लागू करें।

+0

यह दुर्भाग्य से भी उस समस्या को हल नहीं करता है – Rmatt