मैं सोच रहा था कि क्या कुछ पाठ फाइलें बाद में डिकोडिंग के लिए अपने पाठ सामग्री के साथ अपने एन्कोडिंग विधि को संग्रहीत करती हैं?
मार्क Szymanski का उत्तर सही है - एक सादे पाठ फ़ाइल में कोई स्पष्ट एन्कोडिंग जानकारी नहीं है - यह "सादे पाठ फ़ाइल" की परिभाषा है, "सादे" इस तथ्य को संदर्भित करता है कि फ़ाइल में कोई मेटा-डेटा नहीं है।
हालाँकि, कुछ एप्लिकेशन UTF-16 या UTF-32 / UCS-4 के रूप में एन्कोडेड टेक्स्ट फ़ाइलों में बाइट-ऑर्डर मार्क (BOM) लगाएंगे । BOM वास्तव में एन्कोडिंग को इंगित करने के लिए नहीं है (यह बाइट ऑर्डर को इंगित करता है, जैसा कि नाम कहता है), लेकिन कई एप्लिकेशन UTF-16 / UTF-32 को पहचानने के लिए BOM की उपस्थिति का उपयोग करेंगे, इसलिए यह एन्कोडिंग संकेतक के रूप में कार्य करता है।
या क्या टेक्स्ट व्यूअर का काम किसी दिए गए टेक्स्ट फ़ाइल के लिए एन्कोडिंग विधि का अनुमान लगाना है, और अनुमान लगाना हमेशा सही नहीं हो सकता है? यदि हाँ, तो एक पाठ दर्शक कैसे अनुमान लगाता है?
हां, टेक्स्ट दर्शक केवल अनुमान लगा सकता है। यह आमतौर पर कुछ अनुमानों का उपयोग करता है:
- कुछ एनकोडिंग्स में (विशेष रूप से UTF-8 में) सभी बाइट अनुक्रम मान्य नहीं हैं। तो एक आवेदन बस फ़ाइल को UTF-8 के रूप में डिकोड करने का प्रयास कर सकता है। यदि यह सफल होता है, तो फ़ाइल संभवतः UTF-8 है; यदि यह एक अमान्य बाइट अनुक्रम को खोजने में विफल रहता है, तो यह नहीं है। इस प्रकार यह
vim
डिफ़ॉल्ट रूप से काम करता है: यह पहली बार किसी फ़ाइल को पढ़ते समय UTF-8 का उपयोग करने की कोशिश करेगा; यदि वह विफल रहता है, तो यह वापस ISO-8859-1 पर गिर जाता है।
- अधिकांश पुराने 8-बिट एन्कोडिंग में, कोई भी बाइट अनुक्रम मान्य है। उस स्थिति में, आप कभी-कभी बाइट हिस्टोग्राम (विभिन्न बाइट्स / बाइट अनुक्रमों की आवृत्ति) को देखकर एन्कोडिंग का अनुमान लगा सकते हैं। इंटरनेट एक्सप्लोरर एक पृष्ठ के एन्कोडिंग "अनुमान" के लिए ऐसा करता था। हालाँकि, यह बहुत त्रुटि-प्रवण है, इसलिए बहुत कम प्रोग्राम ऐसा करते हैं।
ज्यादातर मामलों में, एक प्रोग्राम को स्पष्ट रूप से बताया जाना चाहिए कि टेक्स्ट फ़ाइल की एन्कोडिंग क्या है, अन्यथा वह इसे सही ढंग से नहीं पढ़ पाएगा।