2011-03-15 13 views
81

अब मैं अपने जीनोम-टर्मिनल के चरित्र एन्कोडिंग को "जीबीके" में बदलता हूं (डिफ़ॉल्ट यह यूटीएफ -8 है), लेकिन मैं अपने लिनक्स में मूल्य (वर्ण एन्कोडिंग) कैसे प्राप्त कर सकता हूं?टर्मिनल के कैरेक्टर एन्कोडिंग को कैसे प्राप्त करें

+3

लघु writeup: [यूनिक्स टर्मिनल: एन्कोडिंग नरक जीवित] (http://benjamin-schweizer.de/unix-terminals-surviving-the-encoding-hell। एचटीएमएल) – miku

उत्तर

73

टर्मिनल environment variables का उपयोग करता है जो character set उपयोग करने के लिए निर्धारित करने के लिए है, इसलिए आप इसे उन वैरिएबल को देखकर निर्धारित कर सकते हैं:

echo $LC_CTYPE 

या

echo $LANG 
+3

इन पर्यावरण चर का उपयोग उन अनुप्रयोगों द्वारा किया जाता है जो टर्मिनल का उपयोग I/O के लिए कर रहे हैं। टर्मिनल एमुलेटर को उनके बारे में कोई जानकारी नहीं है, और वर्तमान में प्रभावी चरित्र एन्कोडिंग एमुलेटर प्रोग्राम (गनोम टर्मिनल के मामले में एक libvte कक्षा के अंदर एक डेटा सदस्य) के भीतर कहीं एक सेटिंग है। – JdeBP

+0

यहां सुझाए गए चर के क्रम अच्छे नहीं हैं। एक और पूरा समाधान कुछ ऐसा होगा: echo $ {LC_ALL: - $ {LC_CTYPE: - $ {LANG}}}। फिर फिर, चर सेट किया गया यह गारंटी नहीं है कि वे मान्य हैं, इसलिए आपको 'लोकेल' प्रोग्राम (जैसा कि अन्य उत्तरों में देखा गया है) से चिपकना चाहिए। –

+0

जैसा कि @ जेडीबीपी ने कहा था, टर्मिनल * एन्कोडिंग निर्धारित करने के लिए 'लोकेल 'पर्यावरण चर का उपयोग नहीं करता है। हालांकि टर्मिनल उन अनुप्रयोगों को दे सकता है जो 'लोकेल' पर्यावरण चर सेट करके इसे एन्कोडिंग जानते हैं।उदाहरण के लिए, मैकोज़ पर आप टर्मिनल एन्कोडिंग चुन सकते हैं और 'टर्मिनल'> 'प्राथमिकताएं'> 'प्रोफाइल'> 'उन्नत' में टर्मिनल स्टार्टअप पर' लोकेल 'पर्यावरण चर सेट कर सकते हैं। – Maggyero

41

चेक एन्कोडिंग और भाषा:

$ echo $LC_CTYPE 
ISO-8859-1 
$ echo $LANG 
pt_BR 

सभी भाषाओं को प्राप्त करें:

$ locale -a 

pt_PT.utf8 को बदलें: कोई तर्क के साथ

$ export LC_ALL=pt_PT.utf8 
$ export LANG="$LC_ALL" 
70

locale आदेश भाषा के अलावा प्रासंगिक वातावरण चर के सभी के मूल्यों प्रिंट होगा।

वर्तमान एन्कोडिंग के लिए:

locale charmap 

उपलब्ध स्थानों के लिए:

locale -a 

उपलब्ध एनकोडिंग के लिए:

locale -m 
4

मेरी जानकारी के लिए, नहीं।

$LC_CTYPE, locale से परिचयात्मक संकेत और ऐसा लग सकता है, लेकिन यह स्क्रीन पर वर्ण प्रदर्शित करते समय टर्मिनल एप्लिकेशन (वास्तव में एक एमुलेटर) का एन्कोडिंग से अलग हो जाता है।

वे निश्चित रूप से एन्कोडिंग का पता लगाने का एकमात्र तरीका केवल एन्कोडिंग में मौजूद कुछ आउटपुट करना है, उदा। ä, एक स्क्रीनशॉट लें, उस छवि का विश्लेषण करें और जांचें कि आउटपुट कैरेक्टर सही है या नहीं।

तो नहीं, दुख की बात नहीं है।

3

यदि आप अजगर है:

python -c "import sys; print(sys.stdout.encoding)" 
+0

उपरोक्त सभी प्रस्तावों में से एकमात्र सुझाव जो मेरे स्लेकवेयर 64 वी। 14.2 बॉक्स पर काम करता था वह अजगर का स्निपेट था। धन्यवाद! –

संबंधित मुद्दे