एक कमांड के साथ टर्मिनल की एन्कोडिंग स्विच करें


24

सर्वरों में से एक मैं अक्सर sshutf-8 के बजाय पश्चिमी एन्कोडिंग का उपयोग करता हूं (और ऐसा कोई तरीका नहीं है कि मैं इसे बदल सकता हूं)।

मैंने इस सर्वर से कनेक्ट करने के लिए एक बैश स्क्रिप्ट लिखना शुरू कर दिया है, इसलिए मुझे हर बार पूरा पता टाइप नहीं करना पड़ेगा, लेकिन मैं इस स्क्रिप्ट को बेहतर बनाना चाहूंगा, इसलिए यह टर्मिनल विंडो के एन्कोडिंग को भी सही ढंग से बदल देगा।

"टर्मिनल" -> "कैरेक्टर एन्कोडिंग ..." -> "वेस्टर्न (ISO-8859-1)" पर नेविगेट करके मुझे जो परिवर्तन करने की आवश्यकता है वह माउस का उपयोग करके किया जा सकता है। क्या कोई टर्मिनल कमांड है जो वर्तमान टर्मिनल विंडो / स्क्रीन के लिए एक ही काम करता है?

स्पष्ट करने के लिए:
मुझे दूरस्थ साइट पर सिस्टम के लोकेल को स्विच करने के तरीकों में कोई दिलचस्पी नहीं है - उस सिस्टम को किसी अन्य व्यक्ति द्वारा प्रशासित किया जाता है, और मुझे नहीं पता कि सामान वहां लैटिन -1 एन्कोडिंग पर निर्भर हो सकता है। मैं जो करना चाहता हूं, वह है कि इस टर्मिनल विंडो को मेरी साइड स्विच कैरेक्टर एन्कोडिंग में ऊपर बताए अनुसार, उसी तरह मैं अपने माउस और मेन्यू के साथ कर सकता हूं।


अच्छा प्रश्न! एन्कोडिंग समस्याएं अक्सर एक पीटीए होती हैं ... यह एक ऐसा तरीका है जो काम नहीं करेगा ... unix.stackexchange.com/questions/8859/…
lumbric

2
यह कैसे संभव है कि मेरा उत्तर स्वीकार कर लिया जाए, लेकिन इनाम दूसरे के पास चला गया? :) :(
törzsmókus

1
@ törzsmókus: आप यहां (नए?) इनाम के नियमों के बारे में पढ़ सकते हैं: blog.stackoverflow.com/2010/06/improvements-to-bounty-system यदि बाउंटी मालिक 7 दिन की बाउंटी अवधि के भीतर इनाम नहीं देता है, समान ऑटो-पुरस्कार नियम पहले की तरह लागू होते हैं: बाउंटी के शुरू होने के बाद पोस्ट किए गए प्रश्न के कोई भी उत्तर, कम से कम 2 अपवोट्स के साथ, ऑटो-स्वीकार करने के लिए योग्य हैं और आधी बाउंटी राशि अर्जित करते हैं। यदि उस मानदंड को पूरा करने वाले कोई जवाब नहीं हैं, तो कोई इनाम नहीं दिया जाता है। - और, फिर, सभी इनाम पूरी तरह से स्वतंत्र हैं और एक उत्तर को स्वीकार करने के लिए असंबंधित हैं।
रूण

जवाबों:


18

आप luitइस उद्देश्य के लिए डिज़ाइन किए गए हैं:

$ luit -encoding ISO-8859-1 ssh remote.host

यह ssh कमांड के आउटपुट को UTF-8 में बदल देगा ताकि आपको टर्मिनल की एन्कोडिंग को बदलने की आवश्यकता न हो।


2
यह सही है। हालाँकि, मैं यहाँ इस बिट को ल्यूक के मैन पेज से ढूंढता हुआ उतरा: "लाइटर को आमतौर पर टर्मिनल नियामक द्वारा पारदर्शी रूप से आमंत्रित किया जाता है।" इसलिए, यहां पहुंचने वालों के लिए क्योंकि आप अपने टर्मिनल में आने वाले गलत एन्कोडिंग के माध्यम से आ रहे हैं, इसे ठीक करने का सामान्य तरीका टर्मिनल विनियामक के माध्यम से एन्कोडिंग को बदलना है।
joseph_morris

@joseph_morris आपको उत्तर दिए जा रहे प्रश्न के तीसरे पैराग्राफ की ओर इशारा करता हूं। ओपी को पता था कि टर्मिनल एमुलेटर के मेनू कमांड का उपयोग करके एन्कोडिंग को कैसे बदलना है (जिसे आप 'सामान्य' तरीका कहते हैं) लेकिन वह एक सीएलआई विकल्प की तलाश में था।
törzsmókus

1
सही है, इसलिए मैंने "यह सही है" के साथ शुरुआत की। हालाँकि, यह पृष्ठ अब "टर्मिनल एन्कोडिंग" के लिए शीर्ष हिट्स में से एक है, और मुझे लगा कि बिटकॉइन प्रलेखन में दूसरों के लिए मददगार होगा जो यहां पहुंचने की कोशिश कर रहे हैं कि "मेरा टर्मिनल एन्कोडिंग गड़बड़ क्यों है?" - और यह कि एन्कोडिंग आमतौर पर एमुलेटर में बदल जाती है, सीएलआई नहीं।
joseph_morris

आह, अब मैं आपकी बात देख रहा हूं।
törzsmókus

4

पहले अपने पसंदीदा संपादक में वर्तमान स्थानों को संपादित करें

sudo gedit /var/lib/locales/supported.d/local जैसे कुछ

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

तो भागो sudo dpkg-reconfigure locales

फिर टर्मिनल के साथ सेट करें LANG=en_GB.ISO-8859-1

आशा है कि काम करता है


4

Gnome टर्मिनल सेटिंग्स को स्टोर करने के लिए gconf का उपयोग करता है। इन के साथ हेरफेर किया जा सकता है gconftool, आप उपयोग कर सकते हैं:

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1

मैंने इसका परीक्षण 12.04 को किया है। किसी कारण के लिए, मेनू ( "Terminal"->"Set Character Encoding...") वास्तविक समय में अद्यतन नहीं लगता है, लेकिन वास्तविक चरित्र एन्कोडिंग सही ढंग से अद्यतन नहीं करता है।


2
लेकिन यह सभी टर्मिनलों के लिए डिफ़ॉल्ट एन्कोडिंग को बदलता है , न कि केवल ssh कनेक्शन स्क्रिप्ट को चलाने वाला।
törzsmókus

3

मैं यह नहीं जानता कि इसका परीक्षण कैसे किया जाए, लेकिन कुबंटु पर कोंसोल के साथ मैं निम्नलिखित कार्य कर सकता हूं:

1) डब के लिए पंजीकृत आवेदन खोजें

$ qdbus

मैं konsoleएक साधारण का उपयोग qdbus | grep konsकरता है मुझे देता हैorg.kde.konsole

2) कॉनसोल में वर्तमान सत्र खोजें

$ qdbus org.kde.konsole | grep Sessions
/Sessions
/Sessions/1

$ set | grep -i sessions
KONSOLE_DBUS_SESSION=/Sessions/1

3) उपयोगी तरीके खोजें

$ qdbus org.kde.konsole /Sessions/1 | grep -i codec
method QByteArray org.kde.konsole.Session.codec()
method bool org.kde.konsole.Session.setCodec(QByteArray codec)

4) वर्तमान एन्कोडिंग की जाँच करें

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
UTF-8

5) एन्कोडिंग सेट करें

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1
true

6) वर्तमान एन्कोडिंग की जाँच करें

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
ISO-8859-1

उबंटू में इसी तरह का टर्मिनल प्रोग्राम होगा, लेकिन आपको सही सर्विसिनेम, पाथ, मेथड और आर्ग्युमेंट्स के साथ अपने आप को थिर करना होगा।


2

यहाँ एक और समाधान है जो मैंने उत्पादन सर्वर से कनेक्ट करते समय प्रोफ़ाइल (पृष्ठभूमि रंग के लिए) को बदलने के लिए उपयोग किया था। इसमें शामिल हैxdotool

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

$ xdotool key alt+t Down c Down Return

यह पहले वर्ण एन्कोडिंग को सक्रिय करेगा। Downसे पहले अधिक कुंजी जोड़ेंReturnअन्य का चयन करने ।

नोट: के लिए ssh, आप ~/.ssh/configअपने सर्वर पर उपनामों को कॉन्फ़िगर करने के लिए एक फ़ाइल का उपयोग भी कर सकते हैं ।


क्षमा करें - मेरा मतलब है कि आप को इनाम देने के लिए है, लेकिन गलत पोस्ट पर क्लिक किया = (
टॉमस एशॉन

चूंकि गनोम-टर्मिनल के मेनू को बदलने की गारंटी नहीं है, इसलिए मैं इसे अत्यधिक नाजुक हैक मानता हूं, जो वास्तविक समाधान नहीं होने पर सही बात हो सकती है। लेकिन एक है
törzsmókus

1

पर xterm, का उपयोग करके एन्कोडिंग बदलने के नियंत्रण दृश्यों । उदाहरण के लिए, आपके भीतर bashUTF-8 वर्ण चलकर प्राप्त होता है:

echo -n $'\e%G'

आईएसओ 8859-1 कोडिंग चलाने से सुलभ है:

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