第一種方法:設置編碼格式為utf-8
# 命令行模式
:set encoding=utf-8
第二種方法:以cp936的編碼方式加載文件為:edit ++enc=cp936,可以簡寫為:e ++enc=cp936
# 命令行模式
:e ++enc=cp936
亂碼原因解釋【參考某位大神的,記不住網址了】:
1,系統locale是utf-8(很多linux系統默認的locale形式),編輯的文檔是GB2312或GBK形式的(Windows記事本 默認保存形式,大部分編輯器也默認保存為這個形式)
導致:vim打開文檔后,encoding=utf-8(locale決定的),fileencoding=latin1(自動編碼判斷機制不准導致的),termencoding=空(默認無需轉換term編碼),顯示文件為亂碼。
解決方案1:首先要修正fileencoding為cp936或者euc-cn(二者一樣的,只不過叫法不同)
注意修正的方法不是:set fileencoding=cp936,這只是將文件保存為cp936,正確的方法是重新以cp936的編碼方式加載文件為:edit ++enc=cp936,可以簡寫為:e ++enc=cp936。
解決方案2:臨時改變vim運行的locale環境,方法是以LANG=zh_CN vim abc.txt的方式來啟動vim
此時encoding=euc-cn(locale決定的),fileencoding=空(此locale下文件 編碼自動判別功能不啟用,所以fileencoding為文件本身編碼方式不變,也就是euc-cn),termencoding=空(默認值,為空則等 於encoding)此時還是亂碼的,因為我們的ssh終端認為接受的數據為utf-8,但vim發送數據為euc-cn,所以還是不對。此時再用命令: set termencoding=utf-8將終端數據輸出為utf-8,則顯示正常。
2,情況與1基本相同,只是使用的ssh軟件為secure CRT類ansi類軟件。
vim打開文檔后,encoding=utf-8(locale決定的),fileencoding=latin1(自動編碼判斷機制不准導致的),termencoding=空(默認無需轉換term編碼),顯示文件為亂碼。
解決方案1:首先要保證運行secure CRT的windows機器的默認代碼頁為CP936,這一點中文windows已經是默認設置了。其他的與上面方案1相同,只是要增加一步,:set termencoding=cp936
解決方案2:與上面方案2類似,不過最后一步修改termencoding省略即可,在此情況下需要的修改最少,只要以locale為zh_CN開 啟vim,則encoding=euc-cn,fileencoding和termencoding都為空即為encoding的值,是最理想的一種情況。
可見理解這3個關鍵點和3個參數的意義,對於編碼問題有很大助力,以后就可以隨心所欲的處理文檔了,同時不僅僅是應用於vim,在其他需要編碼轉換的環境里,都可以應用類似的思路來處理問題解決問題。