यूनिकोड UTF-8 को यूनिकोड के रूप में कैसे प्रदर्शित किया जाए?


12

मेरे पास कुछ UTF-8-एन्कोडेड पाठ फाइलें हैं जो Emacs में अजीब एस्केप कोड प्रदर्शित करती हैं। उदाहरण के लिए, यह पाठ:

आइसटा क्वालिस्टियोन प्रिमो एक्सपोनम क्विड इंटेलीजेंडम इस्ट प्रति हॉक नोमेन 'डेस'; secundo, respondebo ad qualestionem।

इस तरह से Emacs में दिखाया गया है:

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

यह केवल Emacs में होता है। अन्य संपादक पाठ को सही ढंग से दिखाते हैं। मैं इस समस्या को कैसे ठीक करुं?


अपडेट १

अगर मैं कॉल करता हूं revert-buffer-with-coding-systemऔर utf-8फाइल का चयन करता हूं तो सही तरीके से पढ़ा जा सकता है। इसलिए, जैसा कि गाइल्स ने सही अनुमान लगाया है, Emacs फाइल एन्कोडिंग का पता नहीं लगा रहा है। यदि मैं ; -*- coding: utf-8 -*-फ़ाइल में कोड जोड़ता हूं , तो Emacs खुलता है और इसे सही ढंग से प्रदर्शित करता है।


अपडेट २

मैंने फ़ाइल को "UTF-8 में BOM एन्कोडिंग" के साथ फिर से जोड़ दिया, और अब यह Emacs में ठीक प्रदर्शित होता है। मुझे नहीं पता कि दोनों प्रकारों में क्या अंतर है, लेकिन Emacs को केवल BOMed के बारे में पता है।


Emacs फ़ाइल को UTF-8 के रूप में मान्यता नहीं दे रहा है। आपकी init फ़ाइल की सामग्री क्या है? Emacs का कौन सा संस्करण चल रहा है? यह कुछ भी बदलने करता है, तो आप के साथ Emacs शुरू emacs -qया emacs -Q?
गाइल्स का SO- बुराई पर रोक '19

मुझे अन्य UTF-8 फ़ाइलों के साथ कोई समस्या नहीं है। मैं GNU Emacs 24.4.4 चला रहा हूं। emacs -qया के साथ कोई अंतर नहीं है emacs -Q
एनवीघन

आह, अगर यह अन्य फाइलों के साथ और एक प्राचीन विन्यास में काम करता है तो इसका कारण यह है कि फ़ाइल में कहीं न कहीं अमान्य UTF-8 भी है। मुझे देखते हैं कि कैसे Emacs के साथ बताने के लिए ...
Gilles 'SO- बंद करो बुराई'

संभवतः संबंधित: emacs.stackexchange.com/q/4100/2264
शॉन

जवाबों:


10

किसी कारण से, Emacs फ़ाइल को UTF-8 के रूप में मान्यता नहीं दे रहा है। आप कमांड C-x RET r( revert-buffer-with-coding-system) दर्ज करके और चलाकर Emacs को फाइल को UTF-8 के रूप में फिर से खोलने के लिए मजबूर कर सकते हैं utf-8

इस कारण से Emacs ने इस फ़ाइल को UTF-8 के रूप में नहीं पहचाना (लेकिन अन्य को पहचानता है) संभावना है कि इसमें कुछ अमान्य UTF-8 अनुक्रम शामिल हैं। यह अनुक्रम तब भी बैकस्लैश के रूप में दिखाई देगा, जिसके बाद एक अलग रंग ( escape-glyphचेहरे) के साथ तीन ऑक्टल अंक होते हैं, जो फ़ाइल को UTF-8 के रूप में फिर से व्याख्या करता है। आप इस तरह के अनुक्रम को चलाकर खोज सकते हैं C-M-s( isearch-regexp) और ढूंढ रहे हैं

[^^@-~[:multibyte:]]

जहाँ ^@टाइप करके प्रवेश किया जाता है C-q C-SPC(यह वर्ण ^ @ = 0 है, दो-वर्ण अनुक्रम परिधि-पर नहीं; वर्ण इसके पहले परिधि वर्ण है)।

आप Emacs को कोडिंग सिस्टम फ़ाइल चर जोड़कर फ़ाइल को UTF-8 के रूप में पहचानने के लिए बाध्य कर सकते हैं : -*-coding: utf-8-*-पहली पंक्ति की तरह कुछ डालें, या फ़ाइल के अंत के पास कुछ इस तरह रखें (आप #किसी भी उपसर्ग द्वारा प्रतिस्थापित कर सकते हैं , लेकिन Local Variables:और End:चाहिए अनुगामी बृहदान्त्र के साथ इस तरह दिखाई देते हैं):

# Local Variables:
# coding: utf-8
# End:

Emacs एन्कोडिंग को चुनता है जिसके अनुसार फ़ाइलों की व्याख्या कई सेटिंग्स, मुख्य रूप से भाषा के वातावरण और चर auto-coding-alistऔर के आधार पर की जाती है auto-coding-regexp-alist। चूँकि आपको रनिंग करते समय भी इस फ़ाइल के साथ यही समस्या है emacs -Q, मुझे लगता है कि यह उन सेटिंग्स के साथ समस्या नहीं है, बल्कि फ़ाइल सामग्री के साथ है।


अगर मैं कोडिंग प्रणाली फ़ाइल चर के बिना फ़ाइल को खोलने (यानी जब फ़ाइल प्रदर्शित करता है को गलत तरीके से) और regex खोज चलाने, मेरी के सभी \342, \200, \230, आदि का चयन किया जाता है। लेकिन अगर मैं इसे "सही ढंग से" (कोडिंग चर का उपयोग करके) खोलता हूं, तो कोई भी खोज परिणाम दिखाई नहीं देते हैं।
एनवीजीथन

@ नवघन हम्म। तब मुझे समझ में नहीं आता है कि इस फाइल को यूटीएफ -8 के रूप में मान्यता क्यों नहीं दी जाती है, जब अन्य (विशेष रूप से अंडर emacs -Q)।
गिल्स एसओ- बुराई को रोकना '

1

BOM के बारे में सवाल का जवाब देने की देर है, लेकिन मैं इसे किसी भी तरह करूँगा।

बाइट ऑर्डर मार्क (BOM) तीन बाइट्स \ xef \ xbb \ xbf का एक अनुक्रम है, जो एक फ़ाइल की शुरुआत में, सिस्टम और अनुप्रयोगों को इंगित करता है कि सामग्री UTF-8 के रूप में एन्कोडेड हैं। उचित रूप से वे मेटाडेटा हैं, सामग्री के भाग के रूप में नहीं माना जाता है।

अधिकांश एप्लिकेशन - एमएसीएस उनमें से एक है - बीओएम का सम्मान करें और इसके साथ सभी यूटीएफ -8 फाइलें लिखें। अन्य अनुप्रयोग इसे पढ़ने में सम्मानित कर सकते हैं, लेकिन इसे नहीं लिख सकते हैं; और अन्य लोग इसके बारे में नहीं जानते हैं और जब वे इसका सामना करते हैं तो एक त्रुटि संदेश फेंक सकते हैं। दूसरे शब्दों में, स्थिति गड़बड़ है। जहां भी संभव हो मैं इसका उपयोग करना पसंद करता हूं।


-1

केवल UNIX- जैसी प्रणालियों के लिए।

कई मामलों में ~ / .bashrc ~ / bash_profile में सीधी एन्कोडिंग परिभाषा

LANG=en_EN.UTF8

के साथ पूरा किया

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

में ~ /। लाभ आपके मुद्दे को हल करना चाहिए।

पुनश्च इन सुधारों के बाद आपको बदलाव देखने की अनुमति देने के लिए अपने सत्र में RELOGIN की आवश्यकता होगी।


अल्थौग जो आप कहते हैं वह उपयोगी हो सकता है, यह इस सवाल का जवाब देने के लिए प्रकट नहीं होता है, क्योंकि समस्या केवल कुछ utf-8 फाइलों के साथ थी।
जीनपिएरे

मान लीजिए कि कॉन्फ़िगरेशन फ़ाइलों में सख्त एन्कोडिंग परिभाषा के बाद यह समस्या सभी फ़ाइलों के लिए हमेशा के लिए समाप्त हो सकती है :-)
एलियथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.