首頁>Club>
4
回覆列表
  • 1 #

    如果你需要在Linux 中操作windows下的檔案 ,那麼你可能會經常遇到檔案 編碼 轉換的問題。Windows中預設的檔案 格式是GBK(gb2312),而Linux 一般都是UTF-8。下面介紹一下,在Linux 中如何檢視 檔案 的編碼 及如何進行對檔案 進行編碼 轉換。

    檢視 檔案 編碼

    在Linux 中檢視 檔案 編碼 可以透過以下幾種方式:

    1.在Vim 中可以直接檢視 檔案 編碼

    :set fileencoding

    即可顯示檔案 編碼 格式。

    如果你只是想檢視 其它編碼 格式的檔案 或者想解決用Vim檢視 檔案 亂碼的問題,那麼你可以在

    ~/.vimrc 檔案 中新增以下內容:

    set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

    這樣,就可以讓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 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手冊。

  • 中秋節和大豐收的關聯?
  • 怎樣才能查到保險公司員工的身份是否真實?