के रूप में अन्य लोगों ने कहा, # coding:
एन्कोडिंग स्रोत फ़ाइल में सहेजा जाता है निर्दिष्ट करता है।यहाँ कुछ उदाहरण इस वर्णन करने के लिए कर रहे हैं:
cp437 (मेरी एन्कोडिंग कंसोल) के रूप में डिस्क पर सहेजी जाने वाली फ़ाइल है, लेकिन कोई एन्कोडिंग घोषित
b = 'über'
u = u'über'
print b,repr(b)
print u,repr(u)
आउटपुट:
File "C:\ex.py", line 1
SyntaxError: Non-ASCII character '\x81' in file C:\ex.py on line 1, but no
encoding declared; see http://www.python.org/peps/pep-0263.html for details
# coding: cp437
के साथ फ़ाइल का आउटपुट जोड़ा गया:
über '\x81ber'
über u'\xfcber'
पहले, पायथन को एन्कोडिंग नहीं पता था और गैर-ASCII चरित्र के बारे में शिकायत की गई थी। एक बार यह एन्कोडिंग को जानता था, बाइट स्ट्रिंग बाइट्स को मिला जो वास्तव में डिस्क पर थीं। यूनिकोड स्ट्रिंग के लिए, पायथन ने \ x81 पढ़ा, पता था कि सीपी 437 में ü था, और इसे ü के लिए यूनिकोड कोडपॉइंट में डीकोड किया गया जो यू + 00 एफसी है। जब बाइट स्ट्रिंग मुद्रित की गई थी, पायथन ने कंसोल पर हेक्स मान 81
भेजा। जब यूनिकोड स्ट्रिंग मुद्रित की गई थी, तो पायथन ने सीपीयू 437 के रूप में सही ढंग से मेरे कंसोल एन्कोडिंग का पता लगाया और ü के लिए cp437 मान में यूनिकोड ü का अनुवाद किया।
यहाँ एक फ़ाइल की घोषणा की और में सहेजा के साथ होता है UTF-8:
├╝ber '\xc3\xbcber'
über u'\xfcber'
UTF-8 में, ü, हेक्स बाइट्स C3 BC
के रूप में एन्कोड किया गया है तो बाइट स्ट्रिंग उन बाइट का है , लेकिन यूनिकोड स्ट्रिंग पहले उदाहरण के समान है। पायथन ने दो बाइट्स पढ़े और इसे सही तरीके से डीकोड किया। पायथन ने बाइट स्ट्रिंग को गलत तरीके से मुद्रित किया, क्योंकि उसने दो यूटीएफ -8 बाइट्स को ü को सीधे मेरे सीपी 437 कंसोल पर भेजा।
यहाँ फ़ाइल cp437 घोषित किया जाता है, लेकिन में सहेजा UTF-8:
├╝ber '\xc3\xbcber'
├╝ber u'\u251c\u255dber'
बाइट स्ट्रिंग अभी भी डिस्क पर बाइट्स (UTF-8 हेक्स बाइट्स C3 BC
) मिल गया है, लेकिन उन्हें दो के रूप में व्याख्या एक यूटीएफ -8-एन्कोडेड चरित्र के बजाय cp437 वर्ण। उन दो पात्रों जहां यूनिकोड कोड बिंदुओं का अनुवाद किया गया है, और सबकुछ गलत तरीके से प्रिंट करता है।
'# कोडिंग: utf8' काफी अच्छा है,' की कोई आवश्यकता नहीं - * - ' – jellyfish
@jellyfish मुझे लगता है आप' टाइप करने के लिए # कोडिंग का मतलब: utf -8'। –
'# कोडिंग = utf-8' होना चाहिए। https://www.python.org/dev/peps/pep-0263/ –