जवाबों:
Fileencoding सेटिंग वर्तमान बफ़र एन्कोडिंग दिखाता है:
:set fileencoding
fileencoding=utf8
वास्तव में एक प्लेनटेक्स्ट फ़ाइल के एन्कोडिंग को निर्धारित करने का एक सामान्य तरीका नहीं है, क्योंकि यह जानकारी फ़ाइल में ही सहेजी नहीं गई है - यूटीएफ -8 फ़ाइलों को छोड़कर जहां आपको एक तथाकथित बीओएम मिला है जो एन्कोडिंग को इंगित करता है। यही कारण है कि xml और html फ़ाइलों में मेटाटैग का आकर्षण होता है।
आप 'एन्कोडिंग' सेटिंग के साथ किसी विशेष एन्कोडिंग को लागू कर सकते हैं। संपादक इन सेटिंग्स को कैसे संभालता है, इसे देखें :help encoding
और :help fileencoding
विम में देखें । तुम भी अपने vimrc करने के लिए कई fileencoding सेटिंग्स जोड़ सकते हैं सूचीबद्ध लोगों के आधार पर पता लगाने की कोशिश करने के लिए है।
ध्यान दें कि फ़ाइलों की एन्कोडिंग स्पष्ट रूप से किसी फ़ाइल में कहीं भी नहीं बताई गई है। इस प्रकार, VIM और अन्य अनुप्रयोगों को एन्कोडिंग पर अनुमान लगाना चाहिए। ऐसा करने का विहित तरीका chardet
आवेदन के साथ है , जिसे VIM के भीतर से चलाया जा सकता है:
:!chardet %
Jtimberman द्वारा प्रदान किया गया उत्तर आपको वर्तमान बफर की एन्कोडिंग दिखाता है जो डिस्क पर फ़ाइल के समान एन्कोडिंग नहीं हो सकती है। इस प्रकार, आप देखेंगे कि chardet
कभी-कभी VIM की तुलना में एक अलग एन्कोडिंग दिखाई देगा, खासकर यदि आपने VIM को हमेशा एक विशिष्ट एन्कोडिंग (यानी UTF-8) का उपयोग करने के लिए कॉन्फ़िगर किया है।
इसके बारे chardet
में अच्छी बात यह है कि यह अपने अनुमान के लिए एक आत्मविश्वास स्कोर देता है, जबकि VIM हो सकता है (और अक्सर) एन्कोडिंग का अनुमान लगाने के बारे में गलत है यदि \ x7F (ASCII 127) के ऊपर कई वर्ण नहीं हैं। उदाहरण के लिए, א
PHP कोड की एक लंबी फ़ाइल में एक एकल जोड़ने से chardet
लगता है कि फ़ाइल ISO-8859-2
0.72 के विश्वास के साथ है, जबकि थोड़े लंबे वाक्यांश שלום, עולם!
को जोड़ने पर यह UTF-8 को 0.99 के आत्मविश्वास स्कोर के साथ देता है। दोनों मामलों में, नहीं set fileencoding?
दिखाया गया UTF-8
क्योंकि डिस्क पर फ़ाइल UTF-8 थी, लेकिन क्योंकि VIM UTF-8 का आंतरिक रूप से उपयोग करने के लिए कॉन्फ़िगर किया गया है।
chardet <file>
:। फिर भी, अच्छा सुझाव।
मैंने पाया कि: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
यदि आप सही एन्कोडिंग का पता लगाने में सक्षम नहीं थे, तो आप एक अलग एन्कोडिंग का उपयोग करके किसी फ़ाइल को पुनः लोड कर सकते हैं:
:e ++enc=<encoding>
जहां encoding
हो सकता हैcp850, ISO-8859-1, UTF-8, ...
आप उपयोग कर सकते हैं file yourfilename
एन्कोडिंग या खोजने के लिए chardetect
(द्वारा प्रदान की python-chardet
या uchardet
आधार पर अपने लिनक्स वितरण) के रूप में dotancohen ने सुझाव दिया।