若是你須要在Linux 中操做windows下的文件 ,那麼你可能會常常遇到文件 編碼 轉換的問題。Windows中默認的文件 格式是GBK(gb2312),而Linux 通常都是UTF-8。下面介紹一下,在Linux 中如何查看文件的編碼及如何進行對文件進行編碼轉換。
查看文件編碼
在Linux 中查看 文件編碼能夠經過如下幾種方式:
1.在Vim 中能夠直接查看 文件 編碼
shell
:set fileencoding
便可顯示文件編碼格式。
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
這樣,就可讓vim自動識別文件編碼 (能夠自動識別UTF-8或者GBK編碼的文件 ),其實就是依照fileencodings提供的編碼列表嘗試,若是沒有找到合適的編碼 ,就用latin-1(ASCII)編碼打開。
2. enca 查看文件編碼 vim
若是你的系統中沒有安裝這個命令,能夠用sudo yum install -y enca 安裝windows
$ enca filename filename: Universal transformation format 8 bits; UTF-8 CRLF line terminators
須要說明一點的是,enca對某些GBK編碼的文件識別的不是很好,識別時會出現: Unrecognized encoding
:set fileencoding=utf-8
2. enconv 轉換文件編碼 ,好比要將一個GBK編碼 的文件 轉換成UTF-8編碼 ,操做以下
enconv -L zh_CN -x UTF-8 filename
3. iconv 轉換,iconv的命令格式以下: 工具
iconv -f encoding -t encoding inputfile好比將一個UTF-8 編碼 的文件 轉換成GBK編碼
iconv -f GBK -t UTF-8 file1 -o file2
從Linux往windows拷貝文件或者從windows往Linux 拷貝文件 ,有時會出現中文文件名亂碼的狀況,出現這種問題的緣由是windows的文件名中文編碼默認爲GBK而Linux默認文件名編碼爲UTF8。因爲編碼 不一致,因此致使了文件名亂碼的問題,解決這個問題須要對文件名進行轉碼。
在Linux 中專門提供了一種工具convmv進行文件名編碼 的轉換 ,能夠將文件名從GBK轉換成UTF-8編碼 ,或者從UTF-8轉換到GBK。
首先看一下你的系統上是否安裝了convmv,若是沒安裝的話用如下命令安裝:編碼
yum -y install convmv
convmv -f 源編碼 -t 新編碼 [選項] 文件名 經常使用參數: -r 遞歸處理子文件 夾 --notest 真正進行操做,請注意在默認狀況下是不對文件 進行真實操做的,而只是試驗。 --list 顯示全部支持的編碼 --unescap 能夠作一下轉義,好比把%20變成空格
convmv -f UTF-8 -t GBK --notest utf8 文件名
這樣轉換之後"utf8編碼 的文 名 "會被轉換成GBK編碼 (注意:只是文件 名 編碼 的轉換 ,文件 內容不會發生變化)。