通常來說,Windows中默認的文件格式是GBK(gb2312),而Linux一般都是UTF-8,所以Linux下打開windows的文件會有亂碼的情況。另外,有時要將文件進行編碼轉換,如將簡體中文轉換為繁體中文。
基於以上情況,本文將就在linux下查看和轉換文件的編碼進行說明。
1.查看文件的編碼
1)在Vim中可以直接查看文件編碼
:set fileencoding 即可顯示文件編碼格式。
2)enca查看文件編碼
# enca filename 直接用enca加文件名查看
# enca -L zh_CN filename
注:enca對某些GBK編碼的文件識別不是很好,識別時會出現:unrecognized encoding.
2.轉換文件的編碼
1)在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式
:set fileencoding=utf-8
2)enconv 轉換文件編碼,比如要將一個GBK編碼的文件轉換成UTF-8編碼,如:
# enconv -L zh_CN -x UTF-8 filename
# enca -L zh_CN -x UTF-8 < file1 > file2 不覆蓋原文件
3)iconv 轉換,iconv的命令格式如下:
# iconv -f encoding -t encoding inputfile
# iconv -l 查詢可用編碼
# for i in `find ./ -name *.html`;do echo $i;iconv -f gb2312 -t big5 $i -o /tmp/iconv.tmp;mv /tmp/iconv.tmp $i;done
批量轉換文件編碼實例之一
3.文件名編碼轉換
Linux與windows間拷貝文件,有時文件名會出現亂碼,是因為Windows的文件名中文編碼默認為GBK,而Linux默認的文件名為UTF8。在Linux中有個工具,convmv,可以對文件名進行GBK和UTF的相互轉換。
用法:
Convmv -f 源編碼 -t 新編碼 [option] filename
安裝enca
下載相關rpm包。地址(http://rpmfind.net/linux/RPM/dag/redhat/el5/i386/ )
我下載的是:enca-1.10-1.el5.rf.i386.rpm和enca-devel-1.10-1.el5.rf.i386.rpm
安裝:
# rpm -ivh enca-1.10-1.el5.rf.i386.rpm
# rpm -ivh enca-devel-1.10-1.el5.rf.i386.rpm