2015-12-28 5 views
5

मैं सिर्फ अपनी आधिकारिक वेबसाइट से नवीनतम अजगर 2.7.11 64 बिट डाउनलोड किया है और मेरे Windows 10 यह स्थापित और मैंने पाया है कि अगर नए निष्क्रिय फ़ाइल 你好 की तरह चीनी चरित्र, शामिल हैं, तो मैं नहीं फ़ाइल को बचा सकता है। अगर मैंने इसे कई बार सहेजने की कोशिश की, तो नई फाइल दुर्घटनाग्रस्त हो गई और गायब हो गई।पायथन 2.7.11 आईडीएलई का उपयोग करते समय मैं चीनी वर्णों के साथ फ़ाइल को क्यों सहेज नहीं सकता?

मैं भी नवीनतम अजगर-3.5.1-amd64.exe स्थापित है, और यह इस मुद्दे नहीं है।

इसे कैसे हल करने के लिए?

अधिक: विकी पृष्ठ से एक उदाहरण कोड, https://zh.wikipedia.org/wiki/%E9%B8%AD%E5%AD%90%E7%B1%BB%E5%9E%8B

अगर मैं कोड यहाँ अतीत, StackOverflow alays मुझे चेतावनी: शरीर "मैं सिर्फ डो" नहीं हो सकते। क्यूं कर?

धन्यवाद!

enter image description here

अधिक: मैं इस config विकल्प खोजने के लिए, लेकिन यह बिल्कुल भी मदद नहीं करता है। निष्क्रिय -> विकल्प -> निष्क्रिय कॉन्फ़िगर करें -> सामान्य -> ​​डिफ़ॉल्ट स्रोत एन्कोडिंग: UTF-8

अधिक: चीनी कोड से पहले u को जोड़ कर, सब कुछ ठीक हो जाएगा, यह शानदार तरीका है। नीचे की तरह: enter image description here

u के बिना, कभी-कभी यह दूषित कोड के साथ जाएगा। नीचे की तरह: enter image description here

+0

एक न्यूनतम काम कर नमूना कोड प्रदान करें। –

उत्तर

2

पायथन 2.x एएससीआईआई को डिफ़ॉल्ट एन्कोडिंग के रूप में उपयोग करता है, जबकि पायथन 3.x यूटीएफ -8 का उपयोग करता है। बस का उपयोग करें:
my_string.encode("utf-8")
utf-8 के लिए ascii कन्वर्ट करने के लिए (या आप की जरूरत एन्कोडिंग किसी अन्य के लिए इसे बदल)

आप भी अपने कोड की पहली पंक्ति पर इस लाइन डालने के लिए कोशिश कर सकते हैं:

# -*- coding: utf-8 -*- 
+0

पिछले जिस तरह से आप काम करता है उल्लेख किया! –

2

अजगर 2 अपनी श्रृंखलाएं जिनमें चीनी अक्षरों की दुकान नहीं कर सकते हैं के लिए अपने डिफ़ॉल्ट एन्कोडिंग के रूप में ASCII का उपयोग करता है। दूसरी ओर, पायथन 3 डिफ़ॉल्ट रूप से अपने तारों के लिए यूनिकोड एन्कोडिंग का उपयोग करता है जो चीनी वर्णों को संग्रहीत कर सकता है।

लेकिन उस अजगर 2 मतलब यह नहीं है यूनिकोड तार का उपयोग नहीं कर सकते हैं। आपको बस अपने तारों को यूनिकोड में एन्कोड करना होगा। यहां अपने तारों को यूनिकोड स्ट्रिंग में परिवर्तित करने का एक उदाहरण दिया गया है।

>>> plain_text = "Plain text" 
>>> plain_text 
'Plain text' 
>>> utf8_text = unicode(plain_text, "utf-8") 
>>> utf8_txt 
u'Plain_text' 

स्ट्रिंग, utf8_txt में उपसर्ग u का कहना है कि यह एक यूनिकोड स्ट्रिंग है।

आप यह भी कर सकते हैं।

>>> print u"你好" 
>>> 你好 

तुम बस u के साथ अपने स्ट्रिंग पहले जोड़ें करने के लिए सूचित करने के लिए है कि यह एक यूनिकोड स्ट्रिंग है।

+0

'जोड़ना u' बहुत अच्छा है! –

0

अजगर 2 का उपयोग करते समय विंडोज पर:

  1. यूनिकोड वर्ण के साथ फ़ाइल के लिए निष्क्रिय में सहेजने के लिए, एक पंक्ति

    # -*- coding: utf-8 -*- 
    

    इसकी शुरुआत में जोड़ा जाना आवश्यक है।

  2. और यूनिकोड वर्ण Windows में सांत्वना उत्पादन में सही ढंग से दिखाने के लिए, अगर निष्क्रिय कंसोल में या Windows खोल में एक स्क्रिप्ट, एक फ़ाइल में बचाया, चल , तार u साथ prepended किया जाना है के लिए:

    print u"你好" 
    print u"Привет" 
    

    लेकिन इंटरैक्टिव मोड में, मैं सिरिलिक के साथ इस की कोई आवश्यकता नहीं की खोज की।

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

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