UTF 8 फ़ाइल नाम?


15

यूनिक्स आधारित ऑपरेटिंग सिस्टम में utf6 फ़ाइल नाम अनुमेय हैं? यदि ऐसा है तो मुझे डिस्क पर फ़ाइल लिखने के लिए कुछ विशेष करने की आवश्यकता है।

मुझे समझाने दीजिए कि मैं क्या करने की उम्मीद कर रहा हूं। मैं एक एप्लिकेशन लिख रहा हूं जो एक फाइल को ftp के माध्यम से एक रिमोट सिस्टम में ट्रांसफर कर देगा लेकिन फ़ाइलनाम डायनामिक रूप से मेटा डेटा के कुछ सेट के माध्यम से सेट होता है जो संभवतः utf8 में हो सकता है। मैं सोच रहा था कि वहाँ कुछ मैं unix / linux में डिस्क पर फ़ाइल लिखने के लिए करने की जरूरत है।

एक अनुवर्ती के रूप में भी किसी को पता नहीं है कि क्या होगा यदि मैं एक utf 8 फाइलनाम को एक सिस्टम पर अपलोड करता हूं जो utf8 का समर्थन नहीं करता है?

जवाबों:


20

यूनिक्स / लिनक्स पर, एक फ़ाइल नाम स्लैश या NUL को छोड़कर किसी भी बाइट का एक क्रम है। एक स्लैश पथ घटकों को अलग करता है, और एक एनयूएल एक पथ नाम को समाप्त करता है।

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

आधुनिक यूनिक्स / लिनक्स वातावरण यूटीएफ -8 एन्कोडेड फाइलनेम को ठीक से संभालते हैं।


12

आंतरिक रूप से, अधिकांश फाइल सिस्टम बाइट्स की दुकान करते हैं: फाइलसिस्टम ड्राइवर को इस बात की परवाह नहीं है कि बाइट्स का क्या मतलब है। लिनक्स और अधिकांश अन्य आधुनिक यूनियनों पर जेनेरिक फाइलसिस्टम ड्राइवर किसी भी बाइट के अलावा किसी अन्य /बाइट को फाइल नाम में प्रदर्शित करने की अनुमति देता है ।

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

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

यदि आप ऐसी प्रणाली पर फ़ाइलों को संग्रहीत करते हैं जो UTF-8 का समर्थन नहीं करती हैं, तो इससे कोई फर्क नहीं पड़ता। बाइट्स वही रहेंगे। आप उन पात्रों को प्रदर्शित करने में सक्षम नहीं होंगे जो फ़ाइल नाम बनाते हैं, लेकिन यदि आप फ़ाइलों को एक सिस्टम में वापस कॉपी करते हैं जो UTF-8 का समर्थन करते हैं, तो वही बाइट्स अभी भी UTF-8 वर्णों के रूप में प्रदर्शित होंगे।

यदि आप आंतरिक रूप से, जब भी संभव हो, भंडारण और प्रसारण के लिए UTF-8 का उपयोग करके, अपना स्वयं का अनुप्रयोग लिख रहे हैं, तो यह एक अच्छा विचार है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.