vim 編碼格式設定不正確 vim字元編碼設定

2021-10-13 11:18:00 字數 2140 閱讀 5582

vim 編碼方式的設定

和所有的流行文字編輯器一樣,vim 可以很好的編輯各種字元編碼的檔案,這當然包括ucs-2、utf-8 等流行的 unicode 編碼方式。然而不幸的是,和很多來自 linux 世界的軟體一樣,這需要你自己動手設定。

* encoding: vim 內部使用的字元編碼方式,包括 vim 的 buffer (緩衝區)、選單文字、訊息文字等。預設是根據你的locale選擇.使用者手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在.vimrc 中改變它的值才有意義。你可以用另外一種編碼來編輯和儲存檔案,如你的vim的encoding為utf-8,所編輯的檔案採用cp936編碼,vim會自動將讀入的檔案轉成utf-8(vim的能讀懂的方式),而當你寫入檔案時,又會自動轉回成cp936(檔案的儲存編碼).

* fileencoding: vim 中當前編輯的檔案的字元編碼方式,vim 儲存檔案時也會將檔案儲存為這種字元編碼方式 (不管是否新檔案都如此)。

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

* termencoding: vim 所工作的終端 (或者 windows 的 console 視窗) 的字元編碼方式。如果vim所在的term與vim編碼相同,則無需設定。如其不然,你可以用vim的termencoding選項將自動轉換成term的編碼.這個選項在 windows 下對我們常用的 gui 模式的 **im 無效,而對 console 模式的vim 而言就是 windows 控制台的**頁,並且通常我們不需要改變它。

好了,解釋完了這一堆容易讓新手犯糊塗的引數,我們來看看 vim 的多字元編碼方式支援是如何工作的。

1. vim 啟動,根據 .vimrc 中設定的 encoding 的值來設定 buffer、選單文字、訊息文的字元編碼方式。

2. 讀取需要編輯的檔案,根據 fileencodings 中列出的字元編碼方式逐一探測該檔案編碼方式。並設定 fileencoding 為探測到的,看起來是正確的 (注1) 字元編碼方式。

3. 對比 fileencoding 和 encoding 的值,若不同則呼叫 iconv 將檔案內容轉換為encoding 所描述的字元編碼方式,並且把轉換後的內容放到為此檔案開闢的 buffer 裡,此時我們就可以開始編輯這個檔案了。注意,完成這一步動作需要呼叫外部的 iconv.dll(注2),你需要保證這個檔案存在於 $vimruntime 或者其他列在 path 環境變數中的目錄裡。

4. 編輯完成後儲存檔案時,再次對比 fileencoding 和 encoding 的值。若不同,再次呼叫 iconv 將即將儲存的 buffer 中的文字轉換為 fileencoding 所描述的字元編碼方式,並儲存到指定的檔案中。同樣,這需要呼叫 iconv.dll由於 unicode 能夠包含幾乎所有的語言的字元,而且 unicode 的 utf-8 編碼方式又是非常具有價效比的編碼方式 (空間消耗比 ucs-2 小),因此建議 encoding 的值設定為utf-8。這麼做的另乙個理由是 encoding 設定為 utf-8 時,vim 自動探測檔案的編碼方式會更準確 (或許這個理由才是主要的 ;)。我們在中文 windows 裡編輯的檔案,為了兼顧與其他軟體的相容性,檔案編碼還是設定為 gb2312/gbk 比較合適,因此 fileencoding 建議設定為 chinese (chinese 是個別名,在 unix 裡表示 gb2312,在 windows 裡表示cp936,也就是 gbk 的**頁)。

對於fedora來說,vim的設定一般放在/etc/vimrc檔案中,不過,建議不要修改它。可以修改~/.vimrc檔案(預設不存在,可以自己新建乙個),寫入所希望的設定。

我的.vimrc檔案如下:

:set encoding=utf-8

:set fileencodings=ucs-bom,utf-8,cp936

:set fileencoding=gb2312

:set termencoding=utf-8

其中,fileencoding配置可以設定utf-8,但是我的***好像不支援utf-8編碼,所以乾脆,我就設定為gb2312了。現在搞定了,不管是vi中還是***上都可以顯示無亂碼的.txt檔案了。

vim 設定編碼格式

本文主要講解下,讓vim能正確顯示和儲存各種編碼檔案的一些常用方法。vim編碼配置裡面有3個選項,分別是encoding fileencodings fileencoding簡寫分別對應為enc fencs fenc。encoding enc 此專案配置的是vim的預設顯示編碼,如果你開啟的檔案編碼...

C 輸入格式不正確

機房收費系統統計乙個操作員結賬情況時,對充值 退卡 收費進行求和查詢。報錯我的d層沒毛病的 是這樣寫的 sqlhelper.sqlhelper sqlhelper new sqlhelper.sqlhelper sqlparameter sqlparams1 string sql1 select s...

Mysql 編碼設定不正確,導致程式報錯

錯誤如下 caused by com.mysql.jdbc.mysqldatatruncation data truncation incorrect string value xe6 x80 xa5 xe7 x94 xa8.for column title at row 1原因編碼錯誤 改編碼,刪...