[轉]Linux查看文件編碼格式及文件編碼轉換

    若是你須要在Linux 中操做windows下的文件 ,那麼你可能會常常遇到文件 編碼 轉換的問題。Windows中默認的文件 格式是GBK(gb2312),而Linux 通常都是UTF-8。下面介紹一下,在Linux 中如何查看文件的編碼及如何進行對文件進行編碼轉換。

查看文件編碼
    在Linux 中查看 文件編碼能夠經過如下幾種方式:
1.在Vim 中能夠直接查看 文件 編碼
shell

:set fileencoding

便可顯示文件編碼格式。
        若是你只是想查看其它編碼格式的文件, 或者想解決用Vim查看文件亂碼的問題,那麼你能夠在~/.vimrc 文件 中添加如下內容:
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

文件編碼轉換
    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 encoding -t encoding inputfile

  好比將一個UTF-8 編碼 的文件 轉換成GBK編碼
iconv -f GBK -t UTF-8 file1 -o file2


Linux 文件名編碼轉換

    從Linux往windows拷貝文件或者從windows往Linux 拷貝文件 ,有時會出現中文文件名亂碼的狀況,出現這種問題的緣由是windows的文件名中文編碼默認爲GBK而Linux默認文件名編碼爲UTF8。因爲編碼 不一致,因此致使了文件名亂碼的問題,解決這個問題須要對文件名進行轉碼。

    在Linux 中專門提供了一種工具convmv進行文件名編碼 的轉換 ,能夠將文件名從GBK轉換成UTF-8編碼 ,或者從UTF-8轉換到GBK。

    首先看一下你的系統上是否安裝了convmv,若是沒安裝的話用如下命令安裝:編碼

yum -y install convmv

 
下面看一下convmv的具體用法:
convmv -f 源編碼 -t 新編碼 [選項] 文件名 經常使用參數: -r 遞歸處理子文件 夾 --notest 真正進行操做,請注意在默認狀況下是不對文件 進行真實操做的,而只是試驗。 --list 顯示全部支持的編碼 --unescap 能夠作一下轉義,好比把%20變成空格

好比咱們有一個utf8編碼 的文件 名 ,轉換 成GBK編碼 ,命令以下:
convmv -f UTF-8 -t GBK --notest utf8  文件名

 這樣轉換之後"utf8編碼 的文 名 "會被轉換成GBK編碼 (注意:只是文件 名 編碼 的轉換 ,文件 內容不會發生變化)。

     注意:不要在NTFS和FAT文件 系統中使用此命令,不然可能產生意外結果,若是要在Linux 中正確的顯示NTFS和 FAT的中文件名,能夠經過mount參數來解決,具體方法查看一下man手冊。
相關文章
相關標籤/搜索