<轉> Linux查看文件編碼格式及文件編碼轉換

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

    文件編碼轉換
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編碼 (只是文件 名 編碼 的轉換 ,文件 內容不會發生變化)。 windows

 dos 和unix 文本文件格式 工具

    dos 和unix 文本文件格式主要是回車的編碼方式不一樣。原來unix下的回車是用0x0A表示的,而dos下的回車則是0x0D0A。能夠是使用ultraedit 中的hex編輯查看。在實際工做中遇到的問題。openldap 的啓動文件須要從配置文件slapd.conf 獲取數據文件的目錄。                                                                             ·LANG=C grep '^directory[[:space:]]+[[:print:]]' /etc/openldap/slapd_pri.conf | sed s,^directory,,·在dos格式下始終不能正確獲取到directroy的值。 編碼

    轉換方法:1.在windows中能夠ultraedit 保存爲unix格式。在linux中可使用dos2unix工具進行轉換。 spa

                   2.用 vim 轉換,用vim打開文本文件,用 set fileformat=unix 轉換
                      vim test.txt 
                      :set fileformat=unix
                       :wq
unix

相關文章
相關標籤/搜索