आपने एक टिप्पणी में उल्लेख किया है कि आपको केवल यूटीएफ -8 का पता लगाने की आवश्यकता है। यदि आप जानते हैं कि विकल्प में केवल एक बाइट एन्कोडिंग शामिल है, तो एक ऐसा समाधान होता है जो अक्सर काम करता है।
यदि आप जानते हैं कि यह यूटीएफ -8 या सिंगल बाइट एन्कोडिंग latin-1
है, तो इसे पहले यूटीएफ -8 में खोलें और फिर अन्य एन्कोडिंग में देखें। अगर फ़ाइल में केवल ASCII वर्ण हैं, तो यह यूटीएफ -8 में खोला जाएगा, भले ही इसे अन्य एन्कोडिंग के रूप में बनाया गया हो। यदि इसमें कोई गैर-ASCII वर्ण शामिल हैं, तो यह लगभग हमेशा सही ढंग से दोनों के बीच सही वर्ण सेट का पता लगाएगा। 1.0.1
यूनिवर्सल एन्कोडिंग डिटेक्टर
का पता लगाता है
chardet:
try:
# or codecs.open on Python 2
filedata = open(filename, encoding='UTF-8').read()
except:
filedata = open(filename, encoding='other-single-byte-encoding').read()
आपका सबसे अच्छा शर्त, chardet
package from PyPI उपयोग करने के लिए है या तो सीधे या BeautifulSoup से UnicodeDamnit
के माध्यम से
- ASCII, UTF-8, UTF-16 (2 वेरिएंट), UTF-32 (4 वेरिएंट)
- बिग 5, GB2312, ईयूसी-TW, हर्ट्ज-जीबी 2312, आईएसओ-2022-सीएन (पारंपरिक और सरलीकृत चीनी)
- ईयूसी-जेपी, SHIFT_JIS, आईएसओ-2022-जेपी (जापानी)
- ईयूसी-के.आर., आईएसओ-2022-के.आर. (कोरियाई)
- केओआई8-आर, MacCyrillic, IBM855, IBM866, आईएसओ 8859 -5, विंडोज़ -1251 (सिरिलिक)
- ISO-8859-2, विंडोज़ -1250 (हंगरी)
- आईएसओ-8859-5, विंडोज़ -1251 (बल्गेरियाई)
- windows-1252 (English)
- आईएसओ-8859-7, विंडोज़ -1253 (ग्रीक)
- आईएसओ-8859-8, विंडोज़ -1255 (दृश्य और तार्किक हिब्रू)
- TIS-620 (थाई)
अजगर 2.1 या बाद
आवश्यक है हालांकि, कुछ फाइलों से अधिक एन्कोडिंग में मान्य होगा, इसलिए chardet
रामबाण नहीं है।
डुप्लिकेट? http://stackoverflow.com/questions/436220/python-is-there-a-way-to-determine-the-encoding-of-text-file और http://stackoverflow.com/questions/2144815/how- एन्कोडिंग-ऑफ-ए-फाइल-इन-पायथन – CppLearner
मैं यूटीएफ -8 (सत्य/झूठा) का पता लगाने के लिए कह रहा था, हर एन्कोडिंग नहीं। – Riki137
आप एक उच्च आत्मविश्वास दर के साथ अनुमान लगा सकते हैं, जब तक कि आप फ़ाइल की सामग्री के बारे में अधिक नहीं जानते हैं, आप वास्तव में निश्चित नहीं हो सकते हैं। उदाहरण के लिए, फ़ाइल का प्रकार (जो इस मामले में आप टेक्स्ट फ़ाइल के लिए पूछ रहे हैं)। अधिकांश समय आप अनुमान लगा सकते हैं। पिछले साल मैं इस बार कुछ बार आया हूं :) यही कारण है कि – CppLearner