2012-05-14 13 views
183

कहो मैं एक समारोह है जब:सिंटैक्स त्रुटि: गैर- ASCII वर्ण फ़ाइल में ' xa3' समारोह रिटर्न '£'

def NewFunction(): 
    return '£' 

मैं इसे और इसे के सामने एक पाउंड चिह्न के साथ कुछ सामान प्रिंट करना चाहते हैं एक त्रुटि प्रिंट जब मैं इस कार्यक्रम को चलाने के लिए प्रयास करते हैं, यह त्रुटि संदेश प्रदर्शित होता है:

SyntaxError: Non-ASCII character '\xa3' in file 'blah' but no encoding declared; 
see http://www.python.org/peps/pep-0263.html for details 

किसी को भी मुझे सूचित कर सकते हैं कि मैं अपना निवेश समारोह में एक पाउंड चिह्न शामिल कर सकते हैं? मैं मूल रूप से इसे कक्षा में उपयोग कर रहा हूं और यह '__str__' भाग के भीतर है कि पाउंड साइन शामिल है।

+27

क्या आपने पीईपी को भी पढ़ा था जिसे आपने लिंक किया था? यह बताता है कि समस्या क्या है और इसे कैसे ठीक किया जाए। – murgatroid99

+0

पायथन संस्करण? –

+1

"क्या कोई मुझे सूचित कर सकता है कि मैं अपने रिटर्न फ़ंक्शन में पाउंड साइन कैसे शामिल कर सकता हूं।" खैर, त्रुटि संदेश कहता है "विवरण के लिए http://www.python.org/peps/pep-0263.html देखें"; शायद आपको वहां से शुरू करना चाहिए? –

उत्तर

272

मैं यह सुझाव देना चाहता हूं कि पीईपी त्रुटि आपको देता है। समस्या यह है कि आपका कोड ASCII एन्कोडिंग का उपयोग करने का प्रयास कर रहा है, लेकिन पाउंड प्रतीक ASCII वर्ण नहीं है। यूटीएफ -8 एन्कोडिंग का उपयोग करने का प्रयास करें। आप अपनी .py फ़ाइल के शीर्ष पर # -*- coding: utf-8 -*- डालकर शुरू कर सकते हैं। अधिक उन्नत होने के लिए, आप अपने कोड में स्ट्रिंग आधार द्वारा स्ट्रिंग पर एन्कोडिंग भी परिभाषित कर सकते हैं। हालांकि, यदि आप पाउंड साइन को अपने कोड में शाब्दिक रखने की कोशिश कर रहे हैं, तो आपको एक एन्कोडिंग की आवश्यकता होगी जो पूरी फ़ाइल के लिए इसका समर्थन करे।

+2

धन्यवाद। इसे स्वयं करने के लिए भूल गए। हालांकि, मेरे मामले में, यह बीओएम के बिना utf-8 में एन्कोड करने के लिए बेहतर काम करता है। –

+0

धन्यवाद !!! खोज के 2 घंटों के बाद यह अंततः इसे काम करता है .. बहुत धन्यवाद –

41

पहले फ़ाइल की शुरुआत करने के लिए # -*- coding: utf-8 -*- लाइन जोड़ने और फिर सभी अपने गैर- ASCII यूनिकोड डेटा के लिए u'foo' का उपयोग करें:

def NewFunction(): 
    return u'£' 

या यह स्वचालित बनाने के लिए अजगर 2.6 के बाद से जादू उपलब्ध का उपयोग करें:

from __future__ import unicode_literals 
+10

यदि आप '' # - * - कोडिंग: utf-8 - * - '' '' '' –

+0

+1 के साथ आपको अपने यूनिकोड स्ट्रिंग को उपसर्ग करने की आवश्यकता नहीं है, धन्यवाद! आप मेरी समस्या का उत्तर था। – Sabuncu

+0

मुझे इतना समय बचाने के लिए धन्यवाद! –

217

निम्न दो लाइन जोड़ने बैठे मेरी .py स्क्रिप्ट के शीर्ष मेरे लिए काम किया (पहली पंक्ति जरूरी हो गया था):

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
+0

धन्यवाद यह एक आकर्षण की तरह काम करता है .. –

+0

इसके लिए धन्यवाद। यह बहुत अजीब है क्योंकि मुझे पहले कभी ऐसा नहीं करना पड़ा था। मुझे लगता है कि मेरी मैक की एन्कोडिंग सेटिंग्स के साथ कुछ बंद है। मेरे पास इस मुद्दे पर मेरी हवा नहीं थी लेकिन मेरे नए समर्थक को यह समस्या है। – anon58192932

+0

मुझे एक ही समस्या मिली और मेरा पायथन 2.7.11 है।दूसरी पंक्ति '# - * - कोडिंग: utf-8 - * -' फ़ाइल के शीर्ष पर जोड़ने के बाद, इसने समस्या का समाधान किया। – hailong

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