2010-07-07 29 views
9

कंसोल में जब मैं आउटपुट रूसी अक्षरों का प्रयास कर रहा हूं यह मुझे देता है ???????????????रूसी अक्षरों को फ़ाइल में कैसे लिखें?

कौन जानता है क्यों?

मैंने फ़ाइल को लिखने की कोशिश की - इस मामले में एक ही स्थिति में।

उदाहरण

f=open('tets.txt','w') 
f.write('some russian text') 
f.close 

फाइल के अंदर के लिए

है - ?????????????????????????/

या

p="some russian text" 
print p 
????????????? 

अतिरिक्त नोटपैड में मुझे रूसी अक्षरों के साथ फ़ाइल को सहेजने की अनुमति नहीं है। मैं यह देता हूं:

This file contains characters in Unicode format which will be lost if you save this file as an ANSI encoded text file. To keep the Unicode information, click Cancel below and then select one of the Unicode options from the Encoding drop down list. Continue?

मेरे सिस्टम को कैसे समायोजित करें, इसलिए मुझे यह समस्या नहीं होगी।

+0

इस प्रश्न का शीर्षक बदतर चुना गया है! –

+0

क्या यह वास्तव में '?' या बल्कि ' ' है? – Gumbo

+0

@ गम्बो: '?' का उपयोग तब किया जाता है जब लक्ष्य दिया गया चरित्र * स्टोर * करने में सक्षम नहीं है क्योंकि यह वर्णमाला सीमा से बाहर है। जैसे डेटाबेस और आउटपुट (फ़ाइल/stdout/आदि) लेखकों।' ' का उपयोग तब किया जाता है जब लक्ष्य * दिए गए चरित्र को प्रदर्शित करने में सक्षम होता है, लेकिन ऐसा नहीं करता क्योंकि यह वर्णमाला की सीमा से बाहर है जिसका उपयोग करने के लिए निर्देश दिया जाता है। जैसे वेब ब्राउज़र्स। सब कुछ, यह समझ में आता है कि '?' का उपयोग यहां किया गया है। – BalusC

उत्तर

12
करने की जरूरत है

यहां एक कामकाजी उदाहरण है, कृपया टिप्पणियां पढ़ें:

#!/usr/bin/env python2 
# -*- coding: utf-8 -*- 
# The above encoding declaration is required and the file must be saved as UTF-8 

from __future__ import with_statement # Not required in Python 2.6 any more 

import codecs 

p = u"абвгдежзийкл" # note the 'u' prefix 

print p # probably won't work on Windows due to a complex issue 

with codecs.open("tets.txt", "w", "utf-16") as stream: # or utf-8 
    stream.write(p + u"\n") 

# Now you should have a file called "tets.txt" that can be opened with Notepad or any other editor 
+0

में मैं त्रुटि मिलती है: सिंटैक्स त्रुटि: गैर एएससीआई वर्ण '\ xff 'फाइल में' मेरी पायथन फाइल ', लेकिन – Pol

+0

घोषित नहीं किया गया, मैंने एन्कोडिंग की घोषणा की, यही दूसरी पंक्ति है। और फ़ाइल में कोई वर्ण '\ xff' (जो 'ÿ' है) नहीं है। क्या आप वाकई सबकुछ ठीक से करते हैं, और नोटपैड में सभी वर्ण सही तरीके से दिखाए जाते हैं? – Philipp

1

आप किस कंसोल का उपयोग कर रहे हैं? संभावना है, आपका कंसोल उस भाषा का समर्थन नहीं करता है। सुनिश्चित करें कि आपका कंसोल यूनिकोड का समर्थन करता है (और यह कि आपका ऐप यूनिकोड स्ट्रिंग भेज रहा है)।

अद्यतन:

विंडोज 'नोटपैड के साथ समस्याओं के बारे में अपने प्रश्न का समाधान करने के लिए अद्यतन: फ़ाइल क्लिक करें> इस रूप में सहेजें, और उसके बाद "एन्कोडिंग" ड्रॉप-डाउन सूची से "यूनिकोड" चुनें।

+0

मैंने 3 अलग कंसोल की कोशिश की! यह एक ऐप नहीं है ... – Pol

+1

आप किस कंसोल की कोशिश की? आप कौन सा ओएस उपयोग कर रहे हैं? क्या आप पाइथन के अलावा प्रोग्रामिंग भाषा का उपयोग करके रूसी कंसोल को अपने कंसोल पर सफलतापूर्वक आउटपुट कर सकते हैं? – bta

+0

मुझे खुशी नहीं हुई जब यह खुश हुआ। लेकिन यह खुशी है, मैं PYMSSQL और ODBC जैसे समान एक्सटेंशन इंस्टॉल करने के बाद। क्या इससे बाहर हो सकता है? – Pol

2

यदि फ़ाइल में गैर-ASCII वर्ण हैं तो आपको फ़ाइल एन्कोडिंग को परिभाषित करने की आवश्यकता है।

http://www.python.org/dev/peps/pep-0263/

+0

कल यह काम कर रहा था? – Pol

+0

यह मदद नहीं करता है! और जब भी मैं नोटपैड में रूसी पाठ को सहेज रहा हूं, तो यह कहता है कि मैं बचा नहीं सकता। क्योंकि मैं अपना डेटा खो देता हूं। – Pol

+0

नोटपैड द्वारा दी गई सलाह का पालन करें और यूनिकोड एन्कोडिंग में से एक चुनें। – Philipp

0

आप भी सांत्वना में लिख रहे हैं या केवल कंसोल में परिणाम seing? पेट्रोज़ड ने कहा कि यह एक पेप-0263 समस्या दिखता है।

print p.decode('your-system-encoding') 

कंसोल में काम करना चाहिए (मैं नहीं जानता कि क्या एन्कोडिंग प्रणाली आप के लिए रूस का उपयोग करें)

आप एक .py फ़ाइल का उपयोग कर रहे हैं, तो आप # -*- coding: UTF-8 -*- रखने की आवश्यकता होगी (जगह utf-8 Rusian एन्कोडिंग के साथ) फ़ाइल के शीर्ष पर और मुझे लगता है कि print में कोई आवश्यकता नहीं है यदि आपका ओएस सही एन्कोडिंग के साथ कॉन्फ़िगर किया गया है। (कम से कम मैं इसे जरूरत नहीं है, लेकिन मैं नहीं जानता कि यह कैसे काम करता है के साथ रूसी)

+0

जब मैं टाइपिन कर रहा हूं तो ठीक है। जब मैं इस # डाल - * - कोडिंग: सिंटैक्स त्रुटि:: UTF-8 - - * मैं त्रुटि मिलती है गैर एएससीआई वर्ण '\ xff' फ़ाइल – Pol

5

कोडेक का उपयोग करके फ़ाइल खोलने का प्रयास करें, आप

import codecs 

और फिर

writefile = codecs.open('write.txt', 'w', 'utf-8') 
संबंधित मुद्दे