अधिक, बिल्ली और कम द्वारा समर्थित वर्ण एनकोडिंग


18

मेरे पास एक पाठ फ़ाइल है जो निम्नानुसार है file:

ISO-8859 टेक्स्ट, CRLF लाइन टर्मिनेटर के साथ

इस फ़ाइल में उच्चारण के साथ फ्रेंच का पाठ है। मेरा शेल उच्चारण प्रदर्शित करने में सक्षम है और emacsकंसोल मोड इन लहजे को सही ढंग से प्रदर्शित करने में सक्षम है।

मेरी समस्या यह है more, catऔर lessउपकरण इस फ़ाइल को सही ढंग से प्रदर्शित नहीं करते हैं। मुझे लगता है कि इसका मतलब है कि ये उपकरण इस वर्ण एन्कोडिंग सेट का समर्थन नहीं करते हैं। क्या ये सच है? इन उपकरणों द्वारा समर्थित वर्ण एन्कोडिंग क्या हैं?

जवाबों:


17

आपका शेल उच्चारण आदि प्रदर्शित कर सकता है क्योंकि यह संभवतः UTF-8 का उपयोग कर रहा है। चूंकि विचाराधीन फ़ाइल एक अलग एन्कोडिंग है, less moreऔर catइसे UTF के रूप में पढ़ने और असफल होने का प्रयास कर रहे हैं। आप अपने वर्तमान एन्कोडिंग की जाँच कर सकते हैं

echo $LANG

आपके पास दो विकल्प हैं, आप या तो अपने डिफ़ॉल्ट एन्कोडिंग को बदल सकते हैं, या फ़ाइल को UTF-8 में बदल सकते हैं। अपने एन्कोडिंग को बदलने के लिए, एक टर्मिनल खोलें और टाइप करें

export LANG="fr_FR.ISO-8859"

उदाहरण के लिए:

$ echo $LANG 
en_US.UTF-8
$ cat foo.txt 
J'ai mal � la t�te, c'est chiant!
$ export LANG="fr_FR.ISO-8859"
$ xterm <-- open a new terminal 
$ cat foo.txt 
J'ai mal à la tête, c'est chiant!

यदि आप उपयोग कर रहे हैं gnome-terminalया इसी तरह, आपको एन्कोडिंग को सक्रिय करने की आवश्यकता हो सकती है, उदाहरण के लिए terminatorराइट क्लिक और:

यहाँ छवि विवरण दर्ज करें

के लिए gnome-terminal:

यहाँ छवि विवरण दर्ज करें

आपका दूसरा (बेहतर) विकल्प फ़ाइल की एन्कोडिंग को बदलना है:

$ cat foo.txt 
J'ai mal � la t�te, c'est chiant!
$ iconv -f ISO-8859-1 -t UTF-8  foo.txt > bar.txt
$ cat bar.txt 
J'ai mal à la tête, c'est chiant!

4

ISO-8858 वर्ण एन्कोडिंग लिनक्स सिस्टम के लिए थोड़ा पुराना है। आपका संपूर्ण लिनक्स सिस्टम हर तरह से यूटीएफ -8 का उपयोग करने की संभावना है। अपने टर्मिनल एमुलेटर और अपने खोल सहित।

तथापि। cat, grepऔर lessकोई एन्कोडिंग परिवर्तन नहीं करते हैं, वे आपके ISO-8859 / latin1 फ़ाइल को UTF-8 के रूप में मानेंगे, जो काम नहीं करेगा।

यदि emacs उन्हें प्रदर्शित करने में सक्षम है, तो यह इसलिए है क्योंकि यह उपयोग किए गए एन्कोडिंग को स्वतः-प्रदर्शित करने की कोशिश करता है और जाहिरा तौर पर सफल होता है। फ़ाइल को UTF-8 के रूप में सहेजने के लिए emacs बताएं और आप इस पर / जो भी उपयोग कर पाएंगे cat/ कर पाएंगे grep

यदि आप सटीक वर्ण एन्कोडिंग जानते हैं (ISO-8859 उनमें से एक संग्रह है, तो आपको सटीक एक जानना होगा: ISO-8859-1 या ISO-8859-15 या इससे भी बदतर), आप अपनी फ़ाइलों को कमांड लाइन से भी बदल सकते हैं :

iconv --from-code ISO-8859-15 your_file -o your_file_as_utf8

2

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

Luit समर्थित एनकोडिंग और UTF-8 के बीच अनुवाद करता है। आप Luit को बताएं कि LC_CTYPEपर्यावरण चर या -encodingविकल्प के साथ सेटिंग करके कौन सा एन्कोडिंग अनुवाद करना है। उदाहरण के लिए, एक लैटिन -1 (उर्फ आईएसओ 8859-1) फ़ाइल प्रदर्शित करने के लिए:

LC_CTYPE=en_US luit less somefile
luit -encoding ISO8859-1 less somefile

यदि फ़ाइल कुछ विदेशी एन्कोडिंग में है जो Luit समर्थन नहीं करता है, तो आप इसे अनुवादक प्रोग्राम के माध्यम से पाइप कर सकते हैं। Iconv कई एनकोडिंग का समर्थन करता है।

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