vim的編碼問題

2021-08-21 05:51:07 字數 1752 閱讀 2692

首先要明確:

windows中預設的檔案格式是gbk(gb2312),而linux一般都是utf-8。

在vim中檢視檔案的編碼方式:set fileencoding,即可顯示檔案編碼格式,如果什麼都沒有顯示,請看第三點。

如果你只是想檢視其它編碼格式的檔案或者想解決用vim檢視檔案亂碼的問題,那麼你可以在~/.vimrc(如果是windows系統,那麼應該修改_vimrc)檔案中新增以下內容:

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

這樣,就可以讓vim自動識別檔案編碼(可以自動識別utf-8或者gbk編 碼的檔案),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ascii)編碼開啟。

以指定的編碼開啟某檔案,如開啟windows中以ansi儲存的檔案:

vim file.txt -c "e ++enc=gb18030"檔案編碼轉換,在vim中直接進行轉換檔案編碼,比如將乙個檔案轉換成utf-8格式:

:set fileencoding=utf-8

6.如果已經開啟了解碼錯的檔案,想重新設定編碼格式:

:edit ++enc=utf8檢視檔案格式

:set fileformat?設定檔案格式為 unix

:set fileformat=unix

如果有時間,請看下面的具體解釋:

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

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

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

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

編輯完成後儲存檔案時,再次對比 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 的**頁)。

vim中的編碼問題

編碼問題的解決 ansi碼 american national standards institute 中文 美國國家標準學會的標準碼。定義 不同的國家和地區制定了不同的標準,由此產生了 gb2312,big5,jis 等各自的編碼標準。這些使用 2 個位元組來代表乙個字元的各種漢字延伸編碼方式,稱...

中文編碼問題 終端和vim

有說修改 var lib locales supported.d locale 和 etc default locale 就可以了但是如果多人共用一台機器沒有root許可權顯然這種方式是不可取的.現在給大家推薦一種在自己宿主目錄下進行修改便可以處理中文顯示亂碼問題 vim bashrcexport ...

VIM編碼設定

vim編碼設定 vim裡面的編碼主要跟三個引數有關 enc encoding fenc fileencoding 和fencs fileencodings fenc是當前檔案的編碼,也就是說,乙個在vim裡面已經正確顯示了的檔案 前提是你的系統環境跟你的enc設定匹配 你可以通過改變 fenc後再w...