日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux vim顯示utf-8文檔亂碼怎么辦?

在Linux系統(tǒng)操作證 , Vim是文本編輯器 , 在使用Vim的時候 , 居然顯示utf-8文檔亂碼 , 遇到這種情況要如何解決呢?下面小編就給大家介紹下Linux如何解決Vim顯示utf-8文檔亂碼問題 , 一起來看看吧 。

Linux vim顯示utf-8文檔亂碼怎么辦?


1.相關(guān)基礎(chǔ)知識介紹
【Linux vim顯示utf-8文檔亂碼怎么辦?】 在Vim中 , 有四個與編碼有關(guān)的選項 , 它們是:fileencodings、fileencoding、encoding和termencoding 。在實際使用中 , 任何一個選項出現(xiàn)錯誤 , 都會導(dǎo)致出現(xiàn)亂碼 。因此 , 每一個Vim用戶都應(yīng)該明確這四個選項的含義 。下面 , 我們詳細(xì)介紹一下這四個選項的含義和作用 。
(1)encoding
encoding是Vim內(nèi)部使用的字符編碼方式 。當(dāng)我們設(shè)置了encoding之后 , Vim內(nèi)部所有的buffer、寄存器、腳本中的字符串等 , 全都使用這個編碼 。Vim 在工作的時候 , 如果編碼方式與它的內(nèi)部編碼不一致 , 它會先把編碼轉(zhuǎn)換成內(nèi)部編碼 。如果工作用的編碼中含有無法轉(zhuǎn)換為內(nèi)部編碼的字符 , 在這些字符就會丟失 。因此 , 在選擇 Vim 的內(nèi)部編碼的時候 , 一定要使用一種表現(xiàn)能力足夠強(qiáng)的編碼 , 以免影響正常工作 。
由于encoding選項涉及到Vim中所有字符的內(nèi)部表示 , 因此只能在Vim啟動的時候設(shè)置一次 。在Vim工作過程中修改encoding會造成非常多的問題 。用戶手冊上建議只在 .vimrc中改變它的值 , 事實上似乎也只有在 .vimrc中改變它的值才有意義 。如果沒有特別的理由 , 請始終將encoding設(shè)置為utf-8 。為了避免在非UTF-8的系統(tǒng)如Windows下 , 菜單和系統(tǒng)提示出現(xiàn)亂碼 , 可同時做這幾項設(shè)置:
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
(2)termencoding
termencoding是Vim用于屏幕顯示的編碼 , 在顯示的時候 , Vim會把內(nèi)部編碼轉(zhuǎn)換為屏幕編碼 , 再用于輸出 。內(nèi)部編碼中含有無法轉(zhuǎn)換為屏幕編碼的字符時 , 該字符會變成問號 , 但不會影響對它的編輯操作 。如果termencoding沒有設(shè)置 , 則直接使用encoding不進(jìn)行轉(zhuǎn)換 。
舉個例子 , 當(dāng)你在Windows下通過telnet登錄Linux工作站時 , 由于Windows的telnet是GBK編碼的 , 而Linux下使用UTF-8編碼 , 你在telnet下的Vim中就會亂碼 。此時有兩種消除亂碼的方式:一是把Vim的encoding改為gbk , 另一種方法是保持encoding為utf-8 , 把termencoding改為gbk , 讓Vim在顯示的時候轉(zhuǎn)碼 。顯然 , 使用前一種方法時 , 如果遇到編輯的文件中含有GBK無法表示的字符時 , 這些字符就會丟失 。但如果使用后一種方法 , 雖然由于終端所限 , 這些字符無法顯示 , 但在編輯過程中這些字符是不會丟失的 。
對于圖形界面下的GVim , 它的顯示不依賴TERM , 因此termencoding對于它沒有意義 。在GTK2下的GVim 中 , termencoding永遠(yuǎn)是utf-8 , 并且不能修改 。而Windows下的GVim則忽略termencoding的存在 。
(3)fileencoding
當(dāng)Vim從磁盤上讀取文件的時候 , 會對文件的編碼進(jìn)行探測 。如果文件的編碼方式和Vim的內(nèi)部編碼方式不同 , Vim就會對編碼進(jìn)行轉(zhuǎn)換 。轉(zhuǎn)換完畢后 , Vim會將fileencoding選項設(shè)置為文件的編碼 。當(dāng)Vim存盤的時候 , 如果encoding和fileencoding不一樣 , Vim就會進(jìn)行編碼轉(zhuǎn)換 。因此 , 通過打開文件后設(shè)置fileencoding , 我們可以將文件由一種編碼轉(zhuǎn)換為另一種編碼 。但是 , 由前面的介紹可以看出 , fileencoding是在打開文件的時候 , 由Vim進(jìn)行探測后自動設(shè)置的 。因此 , 如果出現(xiàn)亂碼 , 我們無法通過在打開文件后重新設(shè)置fileencoding來糾正亂碼 。

推薦閱讀