Vim 字符集問題


    使用CentOS中的Vim 文本編輯器出現中文亂碼的問題。

     凡是字符亂碼的問題,都是字符集不匹配的問題引起的。這里的字符集不匹配只的是文件的編碼和解碼方式不匹配,同時可能涉及到不只一次的解碼過程。

  計算機中的所有文件都是以二進制格式存儲的(計算機可識別內容)。我們在讀取文件內容時,均是通過不同的軟件讀取的,軟件在讀取文件內容時,需要使用不同的字符集來識別文件中的人類可識別內容。字符集就是一個數值與人類可識別基礎字符的對照表。

   一個文件 有自己的編碼字符集,編輯器在讀取文件時有自己的字符集,在linux系統中還會涉及到終端的顯示字符集。

     在Xshell終端中使用Vim打開文件時,中文出現亂碼。分析原因時要考慮:1.文件的原始編碼方式 2.vim打開文件的編碼方式 3. xshell 終端的編碼方式。

       在 Vim 中主要有三個和字符集相關的變量: encoding(enc) , fileencoding(fenc) , fileencodings(fencs).  

 

       fileencodings:打開文件的時候進行解碼的猜測列表。

       fileencoding :用於設置保存文件時使用的字符集。

       encoding:用於設置編輯文件時使用的字符集。   

   例如:可以使用下面的命令

   1.  :edit ++enc=<encoding> [filename]   以指定的編碼格式重新打開文件。即在這種字符集下編輯文件。

   2.  :write ++enc=<encoding> [filename]  以指定的編碼格式保存文件。

        以上兩種方式是可以暫時 覆蓋 下邊 3.4 兩種方式指定的默認 編輯、寫入時默認的字符集。

   3. :set encoding[=<encoding>]  指定編輯文件的字符集。(顯示時)

   4. :set fileencoding[=<encoding>] 指定保存文件的字符集。(寫入時)

 

     我們使用vim打開編輯文件時,文件時存在於內存中的,當編輯完成時 使用  :w 命令將內容寫入磁盤,所以會有encoding 和 fileencoding 兩種參數的,分別設置打開文件編輯時及保存內容到硬盤時使用的字符集。

    vim 在打開文件是 首先根據變量 fileencodings 中的 字符集類別 猜測正確的字符集,然后將fileencoding 變量設置成選中的字符集。如果fileencodings 沒有設置,選擇用系統的字符集 (locale 命令查看)。之后fileencoding 被設置為此編碼。

    使用vim打開一個文件,可以使用 [:set fileencodings]  ,[:set fileencoding] , [:set encoding] 查看當前變量的配置信息。

 

    在Centos中配置vim的三個變量:/etc/vimrc 文件中。

 

 

 

參考的文章:

https://spin.atomicobject.com/2011/06/21/character-encoding-tricks-for-vim/ 

http://www.itnose.net/detail/6487670.html

http://stackoverflow.com/questions/16507777/vim-set-encoding-and-fileencoding-utf-8

http://stackoverflow.com/questions/1174847/how-to-set-the-character-encoding-for-a-file-in-vim

http://www.cnblogs.com/ggjucheng/archive/2012/01/04/2312522.html

http://www.cnblogs.com/jacklikedogs/p/3494566.html

http://www.joelonsoftware.com/articles/Unicode.html

http://blog.sina.com.cn/s/blog_912de1360102wm5p.html

http://www.joelonsoftware.com/articles/Unicode.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM