क्या पाठ फ़ाइलें बाद में डिकोडिंग के लिए अपने एन्कोडिंग विधि को संग्रहीत करती हैं?


19
  1. मैं सोच रहा था कि क्या कुछ पाठ फ़ाइलों ने बाद में डिकोडिंग के लिए अपने पाठ सामग्री के साथ अपने एन्कोडिंग विधि को संग्रहीत किया?
  2. या क्या टेक्स्ट व्यूअर का काम किसी दिए गए टेक्स्ट फ़ाइल के लिए एन्कोडिंग विधि का अनुमान लगाना है, और अनुमान लगाना हमेशा सही नहीं हो सकता है? यदि हाँ, तो एक पाठ दर्शक कैसे अनुमान लगाता है?

यदि यह एक सादा फ़ाइल है, तो यह एन्कोडिंग के बारे में कुछ भी संग्रहीत नहीं करता है। मैं अमीर पाठ के लिए नहीं कह सकता, यद्यपि।
वफ़र

जी, मैं बात कर रहा हूँ प्लेनटेक्स्ट की।
टिम

जवाबों:


19

मैं सोच रहा था कि क्या कुछ पाठ फाइलें बाद में डिकोडिंग के लिए अपने पाठ सामग्री के साथ अपने एन्कोडिंग विधि को संग्रहीत करती हैं?

मार्क 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-बिट एन्कोडिंग में, कोई भी बाइट अनुक्रम मान्य है। उस स्थिति में, आप कभी-कभी बाइट हिस्टोग्राम (विभिन्न बाइट्स / बाइट अनुक्रमों की आवृत्ति) को देखकर एन्कोडिंग का अनुमान लगा सकते हैं। इंटरनेट एक्सप्लोरर एक पृष्ठ के एन्कोडिंग "अनुमान" के लिए ऐसा करता था। हालाँकि, यह बहुत त्रुटि-प्रवण है, इसलिए बहुत कम प्रोग्राम ऐसा करते हैं।

ज्यादातर मामलों में, एक प्रोग्राम को स्पष्ट रूप से बताया जाना चाहिए कि टेक्स्ट फ़ाइल की एन्कोडिंग क्या है, अन्यथा वह इसे सही ढंग से नहीं पढ़ पाएगा।


तो file -biअगर BOM का उपयोग नहीं किया जाता है तो कैसे काम करता है?
पुराना गीजर

@OldGeezer: fileफ़ाइल प्रकार और एन्कोडिंग का निर्धारण करने के लिए विभिन्न आंकड़े हैं । अधिकतर, यह फ़ाइल में कुछ तार या बाइट अनुक्रम के लिए दिखता है। यदि आप अधिक विशिष्ट जानकारी चाहते हैं, तो आपको संभवतः स्रोत पढ़ना होगा। या बस एक अलग प्रश्न पूछें :-)।
साल्स्के

@OldGeezer: और BTW, fileमज़बूती से अधिकांश पाठ एन्कोडिंग (क्योंकि यह बहुत मुश्किल है) का पता नहीं लगा सकता। मैन पेज में कैरेक्टर सेट डिटेक्शन के बारे में कुछ जानकारी है - fileज्यादातर केवल ASCII, UTF-8/16, EBCDIC और ISO-8859-x को पहचानता है। उदाहरण के लिए, KOI8-R में एन्कोडेड एक फ़ाइल को "ISO-8859-1" के रूप में रिपोर्ट किया गया है।
साल्स्के

4

सादा पाठ फ़ाइलें उनके एन्कोडिंग के बारे में कोई जानकारी संग्रहीत नहीं करती हैं। एक दर्शक इसे आपके द्वारा निर्धारित चरित्र एन्कोडिंग के आधार पर निर्धारित करता है। यह इसे खुद से निर्धारित नहीं कर सकता है, क्योंकि यह कंप्यूटर के लिए समान है।


इसलिए पाठ दर्शक पाठ फ़ाइलों के लिए एन्कोडिंग विधियों के बीच अंतर नहीं कर सकते हैं। यदि किसी टेक्स्ट व्यूअर को ऑब्जेक्ट / एग्जीक्यूटेबल फाइल दी जाती है, तो क्या वह बता पाएगा कि यह टेक्स्ट फाइल नहीं है?
टिम

नहीं, यह नहीं हो सकता। इसे टेक्स्ट फाइल की तरह खोलने की कोशिश की जाएगी। और निश्चित रूप से गारबेज सामान का एक गुच्छा प्रदर्शित करेगा। एकमात्र तरीका है कि आप इसे एन्कोडिंग के बीच अंतर कर सकते हैं यदि आप मैन्युअल रूप से एन्कोडिंग को बदलते हैं।
वफ़र्स

@ समय: अधिकांश पाठ दर्शक यह जांचने के लिए कि क्या कोई पाठ फ़ाइल है, एक अनुमानी का उपयोग करें। यदि फ़ाइल में कई गैर-मुद्रण योग्य वर्ण हैं, तो कई दर्शक और संपादक चेतावनी देंगे (उदाहरण के लिए lessऔर grepयूनिक्स / लिनक्स ऐसा करते हैं)।
Sleske
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.