linux 文件編碼格式轉換

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

查看文件編碼python

在Linux中查看文件編碼能夠經過如下幾種方式:linux

1.在Vim中能夠直接查看文件編碼vim

:set fileencodingwindows

便可顯示文件編碼格式。工具

若是你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那麼你能夠在google

~/.vimrc 文件中添加如下內容:編碼

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

這樣,就可讓vim自動識別文件編碼(能夠自動識別UTF-8或者GBK編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,若是沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。code

文件編碼轉換

1.在Vim中直接進行轉換文件編碼,好比將一個文件轉換成utf-8格式

:set fileencoding=utf-8

2. iconv 轉換,iconv的命令格式以下:

iconv -f encoding -t encoding inputfile

好比將一個UTF-8 編碼的文件轉換成GBK編碼

iconv -f GBK -t UTF-8 file1 -o file2

Linux對一個3G的文本進行編碼轉換全過程

本過程當中涉及到的Linux的命令有:split, iconv, cat

問題:有一個3G的文本a.txt,編碼格式爲gbk,如今須要對其進行轉換成爲utf-8。

難點:iconv的轉換是在內存中進行的,所以3G大小的文本,沒法進行直接轉換。

思路:先利用split進行文件切分,而後對每個字文件進行ivonv轉換,最後進行cat合併。

1) ll -h a.txt 查看文件的大小,2.9G

2) wc -l a.txt 查看文件的行數,9千200萬行

3) split -l 20000000 a.txt chunk 按照每一個文件2千萬行進行切割,共分紅5個文件

4) 進行轉換

iconv -f gbk -t utf-8 chunka > chunka_utf8 -c

iconv -f gbk -t utf-8 chunkb > chunkb_utf8 -c

iconv -f gbk -t utf-8 chunkc > chunkc_utf8 -c

iconv -f gbk -t utf-8 chunkd > chunkd_utf8 -c

iconv -f gbk -t utf-8 chunke > chunke_utf8 -c

5) rm chunka chunkb chunkc chunkd chunke 刪除原文件

6) cat chunk* > a.txt_utf8 進行合併

至此,工做完成

2、

批量文件編碼轉換

本操做有風險,請注意操做前備份文件。

1.將原來全部編碼爲gb2312的*.java文件轉換爲編碼爲utf-8的*.java.new文件

for i in `find . -name "*.java"`; do iconv -f gb2312 -t utf-8 $i -o $i.new; done

2.將*.java.new文件的.new擴展名去除

find . -name "*.new" | sed 's/\(.*\).new$/mv "&" "\1"/' | sh

3、

linux下有許多方便的小工具來轉換編碼,

文本內容轉換   iconv

文件名轉換     convmv

mp3標籤轉換    python-mutagen

4、

用法: iconv [選項...] [文件...]

轉換給定文件的編碼。

輸入/輸出格式規範:

-f, --from-code=名稱      原始文本編碼

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

信息:

-l, --list                     列舉全部已知的字符集

輸出控制:

-c                             從輸出中忽略無效的字符

-o, --output=FILE    輸出文件

-s, --silent               關閉警告

--verbose            打印進度信息

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

--usage               給出簡要的用法信息

-V, --version            打印程序版本號

5、

find default -type d -exec mkdir -p utf/{} \;

find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;

這兩行命令將default目錄下的文件由GBK編碼轉換爲UTF-8編碼,目錄結構不變,轉碼後的文件保存在utf/default目錄下。

6、

Linux下文件名編碼批量轉換convmv

因爲FC將字符編碼統一成了UTF8,原來在gb18030下創建的ext3分區中的文件和目錄,一掛載到FC上就顯示成亂碼。google遍整個互聯網,說對於目錄名和文件名,有一個叫convmv的軟件能夠對其進行自動轉換。

今日下載了convmv,摸索了一套使用方法以下:

convmv -f code1 -t code2 -r

code1:分區原來使用的字符集編碼。支持gb23十二、gbk、big5,不支持gb18030和big5-hkscs。

code2:預轉換到的字符集編碼。對於FC,這裏填寫utf8

-r 參數:轉換子目錄。

dir:要轉換的目錄,當前目錄用./表示。

回車執行,這個時候convmv會顯示執行的結果,但不會真正對文件進行修改。並提示使用--replace參數進行修改。

7、

批量轉換文件的編碼

for i in `find ./ -name *.htm` ; do echo $i;iconv -f gb18030 -t utf8 $i -o /tmp/iconv.tmp;mv /tmp/iconv.tmp $i; done

find -name 「*.htm「 \

-exec iconv -f gb2312 -t utf8 ‘{}‘ -o /tmp/iconv.tmp \; \

-exec mv /tmp/iconv.tmp ‘{}‘ \;

相關文章
相關標籤/搜索