1. 程式人生 > >LINUX下檔案字符集編碼檢視與轉換並檔名編碼轉換

LINUX下檔案字符集編碼檢視與轉換並檔名編碼轉換

       檢查檔案編碼file命令

  file ip.txt(加上-i選項可強制顯示字符集)

  ip.txt: UTF-8 Unicode text, with escape sequences

  一、運用iconv命令執行編碼轉換檔案內容編碼轉換

  iconv命令用於轉換指定檔案的編碼,默許輸出到規範輸出裝備,亦可指定輸出檔案。

  用法: iconv [選項...] [檔案...]

  有如下選項可用:

  輸入/輸出格式規範:

  -f, --from-code=稱號 原始文字編碼

  -t, --to-code=稱號 輸出編碼

  資訊:

  -l, --list 羅列一切已知的字符集

  輸出控制:

  -c 從輸出中疏忽無效的字元

  -o, --output=FILE 輸出檔案

  -s, --silent 關閉告誡

  --verbose 列印進度資訊

  -?, --help 給出該系統求助列表

  --usage 給出扼要的用法資訊

  -V, --version 列印順序版本號

  例子:

  iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt

  這個命令讀取aaa.txt檔案,從utf-8編碼轉換為gb2312編碼,其輸出定向到bbb.txt檔案。

  二、檔名編碼轉換

  由於如今用linux,原來在windows裡的檔案都是用GBK編碼的。所以copy到linux下是亂碼,檔案內容能夠用iconv來轉換可是好多中文的檔名仍舊亂碼,找到個能夠轉換檔名編碼的命令,就是convmv。

  convmv命令細緻引數

  比如

  convmv -f GBK -t UTF-8 *.mp3

  不過這個命令不會直正的轉換,你能夠看到轉換前後的比擬。假設要直正的轉換要加上引數 --notest

  convmv -f GBK -t UTF-8 --notest *.mp3

  -f 引數是指出轉換前的編碼,-t 是轉換後的編碼。這個千萬不要弄錯了。不然能夠仍舊亂碼哦。尚有一個引數很有用。就是 -r 這個表示遞迴轉換現在目錄下的一切子目錄。

  三、更好的傻瓜型命令列工具enca,它不但能智慧的識別檔案的編碼,並且還支援成批轉換。

  1.安裝

  $sudo apt-get install enca

  2.檢查現在檔案編碼

  enca -L zh_CN ip.txt

  Simplified Chinese National Standard; GB2312

  Surrounded by/intermixed with non-text data

  3.轉換

  命令格式如下

  $enca -L 現在言語 -x 目標編碼 檔名

  比如要把現在目錄下的一切檔案都轉成utf-8

  enca -L zh_CN -x utf-8 *

  enca -L zh_CN file 檢驗檔案的編碼

        enca -L zh_CN -x UTF-8 file 將檔案編碼轉換為"UTF-8"編碼

  enca -L zh_CN -x UTF-8 < file1 > file2 假設不想掩蓋原檔案能夠這樣,很容易吧。

轉自:http://www.yqdown.com/caozuoxitong/Linux/28974.htm