1. 程式人生 > >在Xshell中使用vim亂碼解決方法

在Xshell中使用vim亂碼解決方法

在XShell中開啟html檔案出現亂碼,於是首先獲得了檔案的編碼方式,命令為:set fileencoding,獲知檔案編碼為euc-cn後使用:set termencoding=euc-cn進行設定則可以正常顯示。

這是因為中文windows預設編碼為cp936(euc-cn),在 linux本地X環境下,一般終端都認為其接收的資料的編碼型別和系統locale型別相符,因此不需關心此方面是否存在問題。但如果牽涉到遠端終端,例 如ssh登入伺服器,則問題就有可能出現了。例如從1臺locale為GB2310的系統(稱作客機)ssh到locale為utf-8的系統(稱作服 務器)並開啟vim編輯文件,在不加任何改動的情況下,伺服器返回的資料為utf-8的,但客戶機認為伺服器返回的資料是gb2312的,按照 gb2312來解釋資料,則肯定就是亂碼了。此問題更多出現在我們的 windows desktop機遠端ssh登入伺服器的情況下,這裡牽扯到不同系統的編碼轉換問題,所以又與windows本身以及ssh客戶端有很大相關性。

顯示正常後,又出現寫入時亂碼,修改了$vi ~/.vimrc配置檔案中set enconding=prc 為set enconding=utf-8後恢復正常。

vim編碼方面的基礎知識:
1,存在3個變數:
encoding—-該選項使用於緩衝的文字(你正在編輯的檔案),暫存器,Vim 指令碼檔案等等。你可以把 ‘encoding’ 選項當作是對 Vim 內部執行機制的設定。
fileencoding—-該選項是vim寫入檔案時採用的編碼型別。
termencoding—-該選項代表輸出到客戶終端(Term)採用的編碼型別。

2,此3個變數的預設值:
encoding—-與系統當前locale相同,所以編輯檔案的時候要考慮當前locale,否則要設定的東西就比較多了。
fileencoding—-vim開啟檔案時自動辨認其編碼,fileencoding就為辨認的值。為空則儲存檔案時採用encoding的編碼,如果沒有修改encoding,那值就是系統當前locale了。
termencoding—-預設空值,也就是輸出到終端不進行編碼轉換。

感謝:http://blog.163.com/little_320/blog/static/38789520091116103325859/