कैसे पता लगाएं कि एक टर्मिनल UTF-8 का समर्थन करता है


21

मैं सेंटो 5 पर पर्ल के लिए CPAN मॉड्यूल स्थापित कर रहा हूं, और इनमें से एक सवाल है 'क्या आपका टर्मिनल UTF-8 का समर्थन करता है?' (दूसरे शब्दों में बयान)। मैं कैसे जानूं?

जवाबों:


15

वास्तव में, परीक्षण करने का निश्चित तरीका एक टेक्स्ट फ़ाइल डाउनलोड करना है और इसे टर्मिनल में कैट करना है और देखना है कि सब कुछ ठीक है या नहीं।

या, यदि आप यूनिकोड विकल्प को सक्षम करने वाले टर्मिनल को फिर से जोड़ सकते हैं (यह मानते हुए कि यह एक है)।

$ TERM और $ LANG कैसा दिखता है?


$ TERM "xterm" है, $ LANG "en_US.UTF-8" है (अहा!) पाठ फ़ाइल टर्मिनल में अच्छी तरह से प्रदर्शित होती है, लेकिन उत्सुकता से, फ़ायरफ़ॉक्स में नहीं।
वॉट्सएप

हाँ, मैं वास्तव में एक ही बात का सामना करना पड़ा: - / ... जब मैंने उसके सुझाव की कोशिश की, तो मुझे प्रश्न चिह्न मिला
theman_on_osx

$ LANG आपको बताता है कि stdout / stderr पर लिखते समय आपका सिस्टम क्या उपयोग करेगा। यह टर्मिनल की क्षमताओं के बारे में कुछ नहीं कहता है। हालाँकि, यदि आपका सिस्टम अजीब अक्षरों का सब कुछ ठीक दिखता है, तो आपका टर्मिनल संभवतः UTF-8 का समर्थन करता है।
एपिकॉन

3
यह भी स्वचालित हो सकता है, कुछ पाठ प्रदर्शित करके और इसकी चौड़ाई की जाँच करके (कर्सर की स्थिति को पहले और बाद में पढ़कर)। मैंने कॉन्सेप्ट का प्रूफ कुछ और पोस्ट किया ।
गिल्स एसओ- बुराई को रोकना '

@ गिल्स, आपका जवाब शानदार है। इसे प्यार करना!

20

इसे अपने टर्मिनल में टाइप करें:

echo -e '\xe2\x82\xac' 

यदि आपका टर्मिनल UTF-8 का समर्थन करता है तो यह यूरो चिन्ह का उत्पादन करेगा:


सभी फोंट में यूरो साइन नहीं है, इसलिए एक अलग टेस्ट कोड बिंदु उचित हो सकता है।
माइकल हैम्पटन

5

सबसे आसान तरीका: आउटपुट को फॉलो करना और उसकी जांच करना। यदि परिमापक UTF-8 को प्रदर्शित करता है, तो यह परिधि के साथ एक कैपिटल O होगा।

perl -le 'print "\x{c3}\x{94}"'

मुझे पूरा यकीन है कि मेरा टर्मिनल अब UTF-8 का समर्थन करता है (विषयवस्तु उनके द्वारा सुझाई गई है) क्या चल रहा है?
वॉट्सएप

हो सकता है कि आप अपने टर्मिनल ऐप में जिस फ़ॉन्ट का उपयोग कर रहे हैं, वह UTF-8 वर्णों का समर्थन न करे।
therek

4
मुझे पता है कि यह बहुत देर हो चुकी है, लेकिन UTF-8 आउट ध्वज उस काम को बेहतर बनाता हैperl -CO -le 'print "\x{d4}"'
एशले

3
या -CO विकल्प के बिना, पर्ल को सही UTF-8 बाइट दें: $ perl -le 'प्रिंट "\ x {c3} \ x {94}"'
टिम

2

सबसे निश्चित आग रास्ता 'लोकेल' कमांड का उपयोग करना है। यह सभी विभिन्न और विविध वेरिएबल्स का प्रिंट आउट लेगा, जो निर्धारित करते हैं कि किस वर्ण का उपयोग करना है। उदाहरण के लिए, यह RHEL5.3 पर मेरा आउटपुट है, केवल डिफ़ॉल्ट रूप से UTF-8 का उपयोग करने के लिए सेट है।

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

1
यह टर्मिनल का परीक्षण नहीं करता है, केवल स्थानीय सेटिंग (जो व्यवहार में हमेशा टर्मिनल एमुलेटर द्वारा सेट नहीं की जाती है, टर्मिनल की वर्तमान स्थिति को प्रतिबिंबित नहीं कर सकती है, या कुछ उपयोगकर्ता कॉन्फ़िगरेशन द्वारा ओवरराइड किया जा सकता है)।
गिल्स एसओ- बुराई को रोकना '

1

आप बस निम्नलिखित कमांड का उपयोग कर सकते हैं:

locale charmap

1
यह टर्मिनल का परीक्षण नहीं करता है। यह केवल लोकेल सेटिंग प्रदर्शित करता है।
विशालकाय

1
curl http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

या

wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

यह स्पष्ट रूप से आवश्यक है wgetया curl


-1
UTF=$(echo -e "\u263A")
if [[ ! "$UTF" =~ "A" ]]  ; then
 echo -n "UNICODE here!"
fi

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