यह कहां से आता है: - * - कोडिंग: utf-8 - * -


135

पायथन निम्नलिखित निर्देश को पहचानता है जो फ़ाइल के एन्कोडिंग को परिभाषित करता है:

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

मैंने इस तरह के निर्देशों को निश्चित रूप से पहले ( -*- var: value -*-) देखा था। यह कहां से आता है? पूर्ण विनिर्देशन क्या है, उदाहरण के लिए मान में रिक्त स्थान, विशेष प्रतीक, न्यूलाइन्स, यहां तक ​​कि -*-स्वयं भी शामिल हो सकते हैं?

मेरा कार्यक्रम सादे पाठ फ़ाइलों को लिख रहा होगा और मैं इस प्रारूप का उपयोग करके उनमें कुछ मेटाडेटा शामिल करना चाहूंगा।


3
यह मेरे संपादक, PyCharm को याद रखना और काम करना आसान है। # coding: utf-8
crizCraig

2
का उपयोग करते हुए # coding: utf8अजगर 2.7 के साथ बॉक्स से बाहर काम करता है, यहां तक कि PyCharm के बाहर। (मैं SublimeText का उपयोग करता हूं)।
बसज


1
@Cbhehe यह सवाल पायथन के बारे में नहीं है, इस बारे में नहीं कि निर्देश क्या करता है या यह कैसे काम करता है। यह पूछ रहा है कि कौन से प्री-पायथन सॉफ्टवेयर ने इसका आविष्कार किया है और यदि फ़ाइल एन्कोडिंग की तुलना में यह अधिक है।
हम्सटरजेन

जवाबों:


89

पायथन फ़ाइल के एन्कोडिंग को निर्दिष्ट करने का यह तरीका PEP 0263 से आता है - पायथन सोर्स कोड एनकोडिंग्स को परिभाषित करना

इसे GNU Emacs ( पायथन लैंग्वेज रेफरेंस, 2.1.4 एन्कोडिंग डिक्लेरेशन देखें ) द्वारा भी मान्यता प्राप्त है , हालांकि मुझे नहीं पता कि यह उस सिंटैक्स का उपयोग करने वाला पहला प्रोग्राम था या नहीं।


4
Emacs मैन्युअल से मैं क्या निष्कर्ष निकाल सकता हूं, मूल्य किसी भी LISP अभिव्यक्ति हो सकता है, विशेष रूप से, एक डबल-कोटेड स्ट्रिंग
हम्सटरजेन

पेप लिंक के लिए धन्यवाद। मैं पहले इस धारणा के तहत था कि निर्देश केवल पाठ संपादक द्वारा उपयोग किया गया था। अब तक, मुझे कभी नहीं पता था कि अजगर इंटरप्रेटर वास्तव में टिप्पणी को पार्स करता है अगर यह फ़ाइल की पहली दो पंक्तियों पर मौजूद है।
.मोबोशी

15

# -*- coding: utf-8 -*-एक अजगर 2 बात है। पायथन 3+ में, स्रोत फ़ाइलों का डिफ़ॉल्ट एन्कोडिंग पहले से ही UTF-8 है और यह पंक्ति बेकार है।

देखें: क्या मुझे पायथन 3 में एन्कोडिंग घोषणा का उपयोग करना चाहिए?

pyupgradeएक उपकरण है जो आप अपने कोड पर चला सकते हैं उन टिप्पणियों को हटाने के लिए और पायथन 2 से अन्य नहीं-उपयोगी-उपयोगी बचे हुए हैं, जैसे आपकी सभी कक्षाएं विरासत में मिली हैं object


8

इसे तथाकथित स्थानीय चर कहा जाता है, जिसे Emacs द्वारा समझा जाता है और इसके अनुरूप सेट किया जाता है। Emacs मैन्युअल में संबंधित अनुभाग देखें - आप उन्हें हेडर या फ़ाइल के पाद लेख में परिभाषित कर सकते हैं


इस विशिष्ट प्रकार की फ़ाइल स्थानीय चर को पायथन इंटरप्रेटर द्वारा भी समझा जाता है, यह केवल पाठ संपादकों के लिए नहीं है। stackoverflow.com/questions/41680533/…
बोरिस

4

PyCharm में, मैं इसे छोड़ दूँगा। यह एक चेतावनी के साथ तल पर UTF-8 संकेतक को बंद कर देता है कि एन्कोडिंग हार्ड-कोडेड है। लगता है कि आपको उपर्युक्त PyCharm टिप्पणी की आवश्यकता नहीं है।


वास्तव में, अगर मैं इस तरह से एक लाइन डालता हूं तो test1 = 'äöü'यह आपको फ़ाइल में इस तरह के हेडर को जोड़ने के लिए संकेत देगा। (pycharm 2019.1)
कट्टन आई

@Cutton आई यह है कि पायथन 2 या 3 के साथ?
बोरिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.