मैं यह सीखने की कोशिश कर रहा हूं कि $LANG
चर सूक्ति-टर्मिनल (और इसके चरित्र एन्कोडिंग वरीयता विकल्प) के साथ कैसे व्यवहार करता है। मैं अपने मुख्य चरित्र-सेट के रूप में iso8859-1 (latin1) का उपयोग कर रहा हूं और मेरे सभी फ़ाइलनाम जैसे एन्कोड किए गए हैं।
निम्नलिखित परीक्षणों के लिए मैं ls -l
उनके फ़ाइलनाम में स्पैनिश उच्चारण पात्रों के साथ एक निर्देशिका करूँगा :
मामला एक:
- ISO-8859-1 के लिए गनोम-टर्मिनल कॉन्फ़िगर किया गया
LANG
"en_US-iso8859-1" पर सेट- परिणाम: मैं सभी फाइलों को सही ढंग से देखता हूं
केस # 2:
- UTF-8 के लिए गनोम-टर्मिनल कॉन्फ़िगर किया गया
LANG
"en_US-iso8859-1" पर सेट- परिणाम: मैं सभी स्पेनिश पात्रों के लिए कचरा पात्र देखता हूं। यह अपेक्षित है क्योंकि मैंने टर्मिनल के लिए चरित्र-एन्कोडिंग को बदल दिया था
केस # 3:
- ISO-8859-1 के लिए गनोम-टर्मिनल कॉन्फ़िगर किया गया
LANG
"en_US-UTF-8" पर सेट करें- परिणाम: मैं सभी स्पेनिश पात्रों के लिए कचरा पात्र देखता हूं।
ऐसा क्यों है कि इस अंतिम मामले में मुझे गढ़े हुए चरित्र दिखाई दे रहे हैं? Ls का आउटपुट फ़ाइल नाम को सीधे गनोम-टर्मिनल पर नहीं भेजना चाहिए क्योंकि वे हैं? और जब से आईएसओ-8859-1 के लिए सूक्ति-टर्मिनल को कॉन्फ़िगर किया गया है, मुझे उम्मीद है कि वे सही दिखेंगे।
एक पल के लिए मुझे लगा कि, शायद, बैश मेरे $LANG
चर पर विचार कर रहा है और कुछ रूपांतरण कर रहा है। फिर मैंने अपने टर्मिनल को UTF-8 में बदल दिया, लेकिन मैं अभी भी पात्रों को सही से नहीं देख सकता। मैंने भी xxd को ls के आउटपुट को पाइप किया और मेरे आश्चर्य को मैं अभी भी फ़ाइलों को एन्कोडेड के रूप में देखता हूं जैसे वे हैं: ISO-8859-1।
रैप अप करने के लिए: यदि मेरी लिस्टिंग में ISO-8859-1 अक्षर हैं और मेरे टर्मिनल एमुलेटर को एक ही वर्ण-एन्कोडिंग के लिए कॉन्फ़िगर किया गया है: कौन रूपांतरण कर रहा है जब LANG
अन्यथा सेट किया गया हो?
आप जो भी मदद दे सकें मैं उसका आभारी होऊंगा।
Craconia