1. 程式人生 > >解決了一個困擾我近一年的vim顯示中文亂碼的問題

解決了一個困擾我近一年的vim顯示中文亂碼的問題

.vimrc 文件 中文字符 不知道 項目 latin1 時也 介紹 utf

  今天解決了vi命令打開日誌文件中文總是顯示亂碼的問題。由於項目組中的日誌包含一些特殊字符,所以使用vim打開日誌文件時總是不能正確識別出文件字符編碼。此時用:set fileencoding命令可以看出vim把文件編碼識別成latin1。

  在這種情況下無論終端設置成gbk還是utf-8編碼,都不能正確顯示中文。

  解決方法有兩個:

  1 使用:e ++enc=utf-8命令強制讓vim以utf-8編碼重新打開文件 註意:由於我們程序有時也會輸出gbk編碼的中文字符日誌,所以有時還會有少量亂碼。

  2 在打開文件前設置好正確的fileencodings(註意這個參數比前面多了一個s,上面的是vim探測出來的文件編碼,這個是可供vim選擇的文件編碼列表)

   在~/.vimrc裏面加上一行設置

  set fileencodings=ucs-bom,utf-8,gbk18030

  (我們項目組機器默認的fileencodings是ucs-bom,utf-8,latin1,latin1是一種兼容性很強的字符編碼,這樣的設置讓vim很傾向於認為文件編碼是latin1)

  總結一下今天學到的vim編碼知識:vim涉及字符顯示的選項有三個,fileencoding文件字符編碼,encoding緩沖區字符編碼,termencoding終端字符編碼。

  vim顯示字符的順序:(探測文件編碼,從fileencodings裏面選擇最合適的編碼賦值給fileencoding)按fileencoding編碼讀取文件->將讀取到的內容轉成encoding編碼->將encoding編碼轉換成termencoding打印到終端->終端(我們平時主要使用的是securecrt)按設置的編碼(一般是utf8)顯示字符。

  其中fileencoding必須在文件打開前設置才有效,encoding必須在vim啟動前設置才有效,termencoding可以根據需要隨時設置。 (之前我一直不知道這幾個設置生效限制,按網上介紹修改過四個編碼,但還是亂碼)

  這四個編碼如果設置不統一,就很有可能出現中文亂碼問題,其中前三個編碼可以在vim查看,最後一個編碼需要在securecrt設置查看。

  

解決了一個困擾我近一年的vim顯示中文亂碼的問題