python - उपखंड पाठ 3 का उपयोग करके पायथन 3 में UTF-8 की छपाई




python-3.x sublimetext3 (2)

उत्तर वास्तव में आपके प्रश्न में जुड़ा हुआ था - PYTHONIOENCODING को "utf-8" सेट करने की आवश्यकता है। हालाँकि, चूंकि OS X मूर्खतापूर्ण है और टर्मिनल या .bashrc या इसी तरह की फ़ाइलों में सेट किए गए पर्यावरण चर पर नहीं .bashrc , यह दूसरे प्रश्न के उत्तर में दिए गए तरीके से काम नहीं करेगा। इसके बजाय, आपको उस वातावरण चर को उदात्त में पास करना होगा।

सौभाग्य से, एसटी 3 बिल्ड सिस्टम (मुझे एसटी 2 के बारे में पता नहीं है) में "env" विकल्प है। यह कुंजियों और मानों का एक शब्दकोष है जो exec.py करने के लिए दिया गया है, जो "target" विकल्प सेट के बिना बिल्ड सिस्टम चलाने के लिए जिम्मेदार है। जैसा कि ऊपर हमारी टिप्पणियों में चर्चा की गई है, मैंने संकेत दिया कि आपके नमूना कार्यक्रम ने UTF-8-एन्कोडेड टेक्स्ट फाइल पर ठीक काम किया है जिसमें नॉन-एएससीआईआई अक्षर होते हैं, जो लिनक्स पर एसटी 3 (बिल्ड 3122) के साथ चलते हैं, लेकिन ओएस एक्स पर चलने वाले समान संस्करण के साथ नहीं सभी को इसे चलाने के लिए आवश्यक था कि इस लाइन को हटाने के लिए बिल्ड सिस्टम को बदल दिया जाए:

"env": {"PYTHONIOENCODING": "utf8"},

मैंने निर्माण प्रणाली को बचाया,, बी मारा, और कार्यक्रम ठीक चला।

BTW, यदि आप exec.py करना चाहते हैं, या Packages/Python/Python.sublime-build , या किसी अन्य फ़ाइल को .sublime-package संग्रह में पैक करना चाहते हैं, तो पैकेज कंट्रोल के माध्यम से PackageResourceViewer स्थापित करें। अलग-अलग फ़ाइलों को लेने के लिए कमांड पैलेट में "ओपन रिसोर्स" विकल्प का उपयोग करें, या "एक्सट्रेक्ट पैकेज" (दोनों को "पैकेजएंडसोर्स व्यूअर:", या फ़र्ज़ी खोज का उपयोग करते हुए पीआरवी) अपने Packages फ़ोल्डर में एक पूरे पैकेज को निकालने के लिए उपयोग किया जाता है, जिसे एक्सेस किया जाता है। Sublime Text → Preferences → Browse Packages… चयन करके Sublime Text → Preferences → Browse Packages… (बस Preferences → Browse Packages… अन्य ऑपरेटिंग सिस्टम पर)। यह आपके हार्ड ड्राइव पर निम्न स्थान पर स्थित है:

  • लिनक्स: ~/.config/sublime-text-3/Packages
  • OS X: ~/Library/Application Support/Sublime Text 3/Packages
  • विंडोज नियमित रूप से स्थापित करें: C:\Users\ YourUserName \AppData\Roaming\Sublime Text 3\Packages
  • विंडोज पोर्टेबल इंस्टाल: InstallationFolder \Sublime Text 3\Data\Packages

एक बार जब फ़ाइलें आपके Packages फ़ोल्डर में सहेज ली जाती हैं (यदि आप उन्हें "ओपन रिसोर्स" विकल्प के माध्यम से देखते हैं और उन्हें बदलने या सहेजने के बिना बंद कर देते हैं, तो वे नहीं होंगे), वे .sublime-package भीतर निहित पहचान-नाम वाली फ़ाइल को ओवरराइड करेंगे। .sublime-package संग्रह। उदाहरण के लिए, यदि आप Python पैकेज में डिफ़ॉल्ट Python.sublime-build फ़ाइल को संपादित करना चाहते हैं, तो आपके परिवर्तन Packages/Python/Python.sublime-build रूप में सहेजे जाएंगे, और जब आप मेनू से Python build system चुनेंगे , यह केवल आपके संस्करण का उपयोग करेगा।

मेरे पास यह पायथन 3 कोड है जो utf-8 एन्कोडेड फ़ाइल से पढ़ने और प्रिंट करने का प्रयास करता है:

f = open('mybook.txt', encoding='utf-8')
for line in f:
    print(line)

जब मैं उदात्त पाठ 3 का उपयोग कर निर्माण करता हूं तो मुझे निम्नलिखित त्रुटि मिलती है:

UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 18: ordinal not in range(128)

हालाँकि, यह फ़ाइल काम करता है जब मैं टर्मिनल में python3 के साथ अपने कोड को निष्पादित करता हूं।

मेरा बिल्ड कॉन्फ़िगरेशन है

{
"cmd": ["/usr/local/bin/python3", "$file"]
, "selector": "source.python"
, "file_regex": "file \"(...*?)\", line ([0-9]+)"
}

अगर मैं इसे बदलूं:

f = open('mybook.txt', encoding='utf-8')
for line in f:
    print(line.encode('utf-8'))

तब यह utf-8 एनकोडेड बाइट स्ट्रिंग को प्रिंट करता है (मुझे लगता है कि यही हो रहा है)।

b'Hello\n'
b'\xc2\xab\xe2\x80\xa2\n'
b'Goodbye'

लेकिन मैं यह भी नहीं जानता कि स्क्रीन पर यूनिकोड के पात्रों को कैसे प्रिंट किया जाए ...

इसके अलावा, अगर मैं एक अजगर कार्यक्रम के अनुसार इस एनवी चर को बदलने की कोशिश करता हूं, तो उदात्त पाठ 3 में निष्पादित करने में विफल रहता है, लेकिन इसे अभी भी ठीक करने में सफलता नहीं मिली है।


ध्यान दें कि यदि आप S3 के साथ वेनव का उपयोग करते हैं, तो आपको पायथन + वर्चुअन.व्यूब्लाइम-बिल्ड संसाधन फ़ाइल को अपडेट करना होगा।

{
    "target": "virtualenv_exec",
    "shell_cmd": "python -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
    "env": {"PYTHONIOENCODING": "utf-8"}
} 




sublimetext