मुझे यह समझने में कठिन समय है कि फ़ाइल नाम एन्कोडिंग कैसे काम करती है। यूनिक्स पर। मुझे स्पष्टीकरण के विरोधाभासी लगता है।
फ़ाइल नाम वर्णों के रूप में संग्रहीत किए जाते हैं
एक अन्य उत्तर को उद्धृत करने के लिए: लिनक्स पर फ़ाइल-सिस्टम वर्ण एन्कोडिंग के बारे में कई प्रश्न
[…] जैसा कि आप अपने प्रश्न में उल्लेख करते हैं, एक UNIX फ़ाइल नाम केवल वर्णों का एक क्रम है; कर्नेल एन्कोडिंग के बारे में कुछ नहीं जानता है, जो पूरी तरह से एक उपयोगकर्ता-स्थान (यानी, एप्लिकेशन-स्तर) अवधारणा है।
यदि फ़ाइल नामों को वर्णों के रूप में संग्रहीत किया जाता है, तो इसमें किसी प्रकार का एन्कोडिंग शामिल होना चाहिए, क्योंकि आखिरकार फ़ाइल नाम को डिस्क पर बिट या बाइट अनुक्रम के रूप में समाप्त होना है। यदि उपयोगकर्ता वर्णों को बाइट अनुक्रम में मैप करने के लिए कोई एन्कोडिंग चुन सकता है जो कर्नेल को खिलाया जाता है, तो मान्य फ़ाइल नाम के लिए किसी भी बाइट अनुक्रम को बनाना संभव है ।
निम्नलिखित मान लें: एक उपयोगकर्ता एक यादृच्छिक एन्कोडिंग एक्स का उपयोग करता है , जो फ़ाइल foo
को बाइट अनुक्रम α में अनुवाद करता है और इसे डिस्क पर सहेजता है। एक अन्य उपयोगकर्ता एन्कोडिंग वाई का उपयोग करता है । इस एन्कोडिंग में α अनुवाद करता है /
, जिसे फ़ाइल नाम के रूप में अनुमति नहीं है। हालाँकि, पहले उपयोगकर्ता के लिए फ़ाइल मान्य है।
मुझे लगता है कि यह परिदृश्य नहीं हो सकता है।
फ़ाइल नाम बाइनरी ब्लॉब्स के रूप में संग्रहीत हैं
एक अन्य उत्तर को उद्धृत करने के लिए: लिनक्स पर फ़ाइल नाम और रास्तों के लिए कौन सी चारसेट एन्कोडिंग का उपयोग किया जाता है?
जैसा कि दूसरों ने नोट किया है, वास्तव में इसका कोई जवाब नहीं है: फाइलनाम और रास्तों में एन्कोडिंग नहीं है; ओएस केवल बाइट्स के अनुक्रम से संबंधित है। व्यक्तिगत अनुप्रयोग किसी तरह से इनकोडिंग के रूप में उनकी व्याख्या करना चुन सकते हैं, लेकिन यह भिन्न होता है।
यदि सिस्टम वर्णों के साथ व्यवहार नहीं करता है, तो फ़ाइल नामों में विशेष वर्ण (जैसे /
या NULL
) कैसे मना किए जा सकते हैं? /
एन्कोडिंग के बिना कोई धारणा नहीं है ।
एक स्पष्टीकरण यह होगा कि फ़ाइल सिस्टम किसी भी
वर्ण वाले फ़ाइल नामों को संग्रहीत कर सकता है और यह केवल उपयोगकर्ता प्रोग्राम हैं जो खाते में एक एन्कोडिंग लेते हैं जो कि अमान्य वर्णों वाले फ़ाइल नामों पर चुटकी लेंगे। यह, बदले में, फ़ाइल सिस्टम और कर्नेल का अर्थ है, बिना किसी कठिनाई के, फ़ाइल नाम संभाल कर रख सकता है /
।
मैं यह भी मानता हूं कि यह गलत है।
एन्कोडिंग कहाँ होती है और विशेष पात्रों को अनुमति नहीं देने पर प्रतिबंध कहाँ लगाया जाता है?