1. 程式人生 > >linux下開啟中文亂碼,set fileencoding 為latin1

linux下開啟中文亂碼,set fileencoding 為latin1

2.http://www.cnblogs.com/joeyupdo/archive/2013/03/03/2941737.html
以下為copy連結2中的介紹
(1)encoding: Vim 內部使用的字元編碼方式,包括 Vim 的 buffer (緩衝區)、選單文字、訊息文字等。使用者手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在 .vimrc 中改變它的值才有意義

(2)fileencoding: Vim 中當前編輯的檔案的字元編碼方式,Vim 儲存檔案時也會將檔案儲存為這種字元編碼方式 (不管是否新檔案都如此),網上是這樣介紹的,但是我這樣做在.vimrc中定義為utf-8似乎沒有作用,只能在開啟vim檔案時手動設定才會起效,不知道什麼原因。

(3)fileencodings: Vim 啟動時會按照它所列出的字元編碼方式逐一探測即將開啟的檔案的字元編碼方式,並且將 fileencoding 設定為最終探測到的字元編碼方式。因此最好將 Unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最後面。

(4)termencoding: Vim 所工作的終端 (或者 Windows 的 Console 視窗) 的字元編碼方式。這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的 Vim 而言就是 Windows 控制檯的內碼表,並且通常我們不需要改變它。

系統locale是utf-8(很多linux系統預設的locale形式),編輯的文件是GB2312或GBK形式的(Windows記事本
預設儲存形式,大部分編輯器也預設儲存為這個形式,所以最常見),終端型別utf-8(也就是假定客戶端是putty類的unicode軟體)
則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。

但是這樣做,檔案關閉後重新開啟又要重新設定一遍。出現亂碼歸根結底的原因是vim不能識別該檔案的編碼方式,導致不能正常解碼(不知道是不是叫解碼,我的理解)。所以,我在.vimrc中設定了fileencodings,相當於告訴vim當以utf-8解碼檔案不成功時以這麼幾種方式嘗試,set fileencoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936,latin1. 這樣開啟正常了