偶爾我們會碰到vim開啟某個檔案的時候出現亂碼,這很可能是編碼問題,Windows中預設的檔案格式是GBK(gb2312),而Linux一般都是UTF-8。
中文編碼有utf-8,big5,gb2312等。那麼我們如何在Linux中查看編碼及如何進行對檔案進行編碼轉換呢?
一、查看編碼
1、查看系統預設支援的編碼:
[root@localhost ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
SYSFONT="lat0-sun16"
2、查看終端介面的編碼:
這個和LANG變數有關:
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
3、查看檔案編碼
在Linux中查看檔案編碼可以通過以下幾種方式:
1)在Vim中可以直接查看檔案編碼
:set fileencoding
如果你只是想查看其它編碼格式的檔案或者想解決用Vim查看檔案亂碼的問題,那麼你可以在
~/.vimrc 檔案中添加以下內容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,big5,gb2312,cp936,latin1
這樣,就可以讓vim自動識別檔案編碼(可以自動識別UTF-8或者GBK編碼的檔案),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用 latin-1(ASCII)編碼開啟。
2) enca (如果你的系統中沒有安裝這個命令,可以用sudo yum install -y enca 安裝 )查看檔案編碼
$ enca filename
filename: Universal transformation format 8 bits; UTF-8
CRLF line terminators
需要說明一點的是,enca對某些GBK編碼的檔案識別的不是很好,識別時會出現:
Unrecognized encoding
一般情況下,只要開啟終端介面的軟體與檔案的編碼一致就可以避免亂碼問題。
二、檔案編碼轉換
1.在Vim中直接進行轉換檔編碼,比如將一個檔案轉換成utf-8格式
:set fileencoding=utf-8
2. enconv 轉換檔編碼,比如要將一個GBK編碼的檔案轉換成UTF-8編碼,操作如下
enconv -L zh_CN -x UTF-8 filename
3. iconv 轉換,iconv的命令格式如下:
iconv -f 原編碼 -t 新編碼 filename
比如將一個UTF-8 編碼的檔案轉換成GBK編碼
[root@localhost ~]# iconv -f cp936 -t utf-8 -o appops.txt
-o 表示建立一個新編碼檔案,保留源檔案及其原編碼
本文出自 “吖one的學習筆記” 部落格