मैं एक पार मंच रास्ते में डिफ़ॉल्ट open()
(io.open()
in 2.7) पाठ एन्कोडिंग बदल सकते हैं?क्या Python के खुले() डिफ़ॉल्ट टेक्स्ट एन्कोडिंग को बदलने का कोई तरीका है?
तो यह है कि मैं हर बार open(...,encoding='utf-8')
निर्दिष्ट करने की आवश्यकता नहीं किया था।
पाठ मोड में, एन्कोडिंग प्रयुक्त एन्कोडिंग निर्दिष्ट नहीं है, तो मंच निर्भर है:
locale.getpreferredencoding(False)
वर्तमान स्थान एन्कोडिंग पाने के लिए कहा जाता है।
हालांकि दस्तावेज निर्दिष्ट नहीं करता है कि कैसे पसंदीदा एन्कोडिंग सेट करें। समारोह locale
मॉड्यूल में है, इसलिए मुझे लोकेल बदलने की जरूरत है? क्या यूटीएफ -8 लोकेल सेट करने के लिए कोई विश्वसनीय क्रॉस-प्लेटफार्म तरीका है? क्या यह डिफ़ॉल्ट टेक्स्ट फ़ाइल एन्कोडिंग के अलावा किसी और चीज को प्रभावित करेगा?
या स्थान परिवर्तन खतरनाक होते हैं (कुछ तोड़ सकते हैं), और मैं करने के लिए छड़ी चाहिए कस्टम आवरण जैसे:
def uopen(*args, **kwargs):
return open(*args, encoding='UTF-8', **kwargs)
फ़ंक्शन को लपेटने का यह सही तरीका है। +1 – user
मैंने 'locale.setlocale()' का प्रयास किया है और यह विंडोज़ पर डिफ़ॉल्ट एन्कोडिंग नहीं बदला है। यहां तक कि एक अलग गैर-यूनिकोड एक भी। इसलिए मैंने सीपीथॉन के स्रोत कोड का निरीक्षण करने का निर्णय लिया और पाया कि 'getpreferredencoding' [उपयोग] (https://github.com/python/cpython/blob/f7eae0adfcd4c50034281b2c69f461b43b68db84/Modules/_localemodule.c#L304) [GetACP] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318070(v=vs.85).aspx) WinAPI फ़ंक्शन, यह "वर्तमान विंडोज एएनएसआई कोड पेज पहचानकर्ता पुनर्प्राप्त करता है"। – user
इस व्यवहार को ओवरराइड करने के लिए पाइथन में कोई तंत्र नहीं है, संस्करण के आश्रित हैक का उपयोग करने के अलावा जोरन द्वारा दूसरे उत्तर में सुझाए गए सुझाव और [इस प्रश्न] के उत्तरों में पाए गए (https://stackoverflow.com/questions/ 31469707/बदलते-स्थान-वरीय एन्कोडिंग-इन-अजगर-3-में-विंडोज़)। मैंने जो पढ़ा है, उससे पाइथन के बाहर विंडोज़ में इस एन्कोडिंग को यूटीएफ -8 में सेट करने के लिए कोई तंत्र नहीं है। इसलिए, इस तथ्य को देखते हुए कि हैक्स का उपयोग किये बिना इस वरीयता को सेट करने का कोई तरीका नहीं है, मैं सहमत हूं कि इसे बदलना अविश्वसनीय हो सकता है। जवाब स्वीकार किया गया। – user