Linux中vi出現中文亂碼的問題

2021-10-09 18:47:23 字數 2122 閱讀 3828

linux 下程式設計,用到的程式設計工具是vi,編輯編譯都方便,但經常出現中文亂碼問題。通常在和windows同步**的情況下,windows下預設支援的是gb編碼,而linux的vi 和vim預設支援的編碼是utf-8(gedit預設也是utf-8)。

所以在linux下出現中文亂碼,一般情況下是編碼出現了問題,需要更改一下配置檔案就好了。

方法一在檔案.virc中新增以下**,檔案沒有需要新建

$vi ~/.virc

let&termencoding=

&encoding

set fileencodings=utf-8,gbk

$:wq

方法二

在/etc/virc中進行如下修改

修改前:

if v:lang =~ "utf8$"

|| v:lang =~ "utf-8$"

set fileencodings=ucs-bom,utf-8,latin1,gbk

endif

修改後:

$vi /etc/virc

if v:lang =~ "utf8$"

|| v:lang =~ "utf-8$"

set fileencodings=ucs-bom,utf-8,latin1,gb18030,gbk,gb2312,cp936

set termencoding=utf-8

set encoding=utf-8

endif

方法三

前兩種方法無效時,可以嘗試一下這種方法,修改當前的語言環境

執行lang=zh_cn.utf-8修改當前環境語言常量

解決辦法:先檢查linux本地字元編碼集,如下:

$ locale

lang=zh_cn.gbk

lc_ctype=

"zh_cn.gbk"

lc_numeric=

"zh_cn.gbk"

lc_time=

"zh_cn.gbk"

lc_collate=

"zh_cn.gbk"

lc_monetary=

"zh_cn.gbk"

lc_messages=

"zh_cn.gbk"

lc_*****=

"zh_cn.gbk"

lc_name=

"zh_cn.gbk"

lc_address=

"zh_cn.gbk"

lc_telephone=

"zh_cn.gbk"

lc_measurement=

"zh_cn.gbk"

lc_identification=

"zh_cn.gbk"

lc_all=

然後更改機器的編碼:

export lang=zh_cn.utf8
vim編碼方面的基礎知識:

1、存在3個變數:

encoding—-該選項使用於緩衝的文字(你正在編輯的檔案),暫存器,vim 指令碼檔案等等。你可以把 『encoding』 選項當作是對

vim 內部執行機制的設定。 fileencoding—-該選項是vim寫入檔案時採用的編碼型別。

termencoding—-該選項代表輸出到客戶終端(term)採用的編碼型別。

2、此3個變數的預設值:

encoding—-與系統當前locale相同,所以編輯檔案的時候要考慮當前locale,否則要設定的東西就比較多了。

fileencoding—-vim開啟檔案時自動辨認其編碼,fileencoding就為辨認的值。為空則儲存檔案時採用encoding的編碼,如果沒有修改encoding,那值就是系統當前locale了。

termencoding—-預設空值,也就是輸出到終端不進行編碼轉換。

由此可見,編輯不同編碼檔案需要注意的地方不僅僅是這3個變數,還有系統當前locale和檔案本身編碼以及自動編碼識別、客戶執行vim的終端所使用的編碼型別3個關鍵點,這3個關鍵點影響著3個變數的設定。

vim 檔案編碼識別與亂碼處理

linux中vi顯示中文亂碼的問題

由於在windows下預設是gb編碼,而我的vim預設是utf 8 gedit預設也是utf 8 所以開啟會成亂碼。修改了一下配置檔案,使vi支援gb編碼就好了。vi vimrc let termencoding encoding set fileencodings utf 8,gbk wq 再次開...

Linux中vi顯示中文亂碼的問題

由於在windows下預設是gb編碼,而我的vim預設是utf 8 gedit預設也是utf 8 所以開啟會成亂碼。修改了一下配置檔案,使vi支援gb編碼就好了。vi vimrc let termencoding encoding set fileencodings utf 8,gbk wq 再次開...

linux出現中文亂碼的問題

說明 很多時候碰到中文目錄,但是想進去又出現亂碼,這個時候換個工具很麻煩很頭痛,採用以下命令試試。1 檢視目錄或檔案對應的節點,使用命令ls li或ls i 2 進入中文目錄下,使用命令 cd find inum x x是檔案得inode號,每乙個檔案都有乙個獨一無二的inode節點 部分find命...