[如果你需要在]
[查看文件编码]
[在Linux中查看文件编码可以通过以下几种方式:]
[1.在]
[:set fileencoding]
[即可显示文件编码格式。]
[如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在]
[~/.vimrc
文件中添加以下内容:]
[set encoding=utf-8
fileencodings=ucs-bom,utf-8,cp936]
[这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。]
[文件编码转换]
[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
进行合并]
[至此,工作完成]
[二、]
[批量文件编码转换]
[本操作有风险,请注意操作前备份文件。]
[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]
[三、]
[linux下有许多方便的小工具来转换编码,]
[文本内容转换
iconv]
[文件名转换
convmv]
[mp3标签转换
python-mutagen]
[四、]
[用法: iconv [选项…]
[文件…]]
[转换给定文件的编码。]
[输入/输出格式规范:]
[-f, –from-code=名称
原始文本编码]
[-t, –to-code=名称
输出编码]
[信息:]
[-l, –list
列举所有已知的字符集]
[输出控制:]
[-c
从输出中忽略无效的字符]
[-o, –output=FILE
输出文件]
[-s, –silent
关闭警告]
[–verbose
打印进度信息]
[-?, –help
给出该系统求助列表]
[–usage
给出简要的用法信息]
[-V, –version
打印程序版本号]
[五、]
[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目录下。]
[六、]
[Linux下文件名编码批量转换convmv]
[由于FC将字符编码统一成了UTF8,原来在gb18030下建立的ext3分区中的文件和目录,一挂载到FC上就显示成乱码。google遍整个互联网,说对于目录名和文件名,有一个叫convmv的软件可以对其进行自动转换。]
[今日下载了convmv,摸索了一套使用方法如下:]
[convmv -f code1 -t code2
-r]
[code1:分区原来使用的字符集编码。支持gb2312、gbk、big5,不支持gb18030和big5-hkscs。]
[code2:预转换到的字符集编码。对于FC,这里填写utf8]
[-r
参数:转换子目录。]
[dir:要转换的目录,当前目录用./表示。]
[回车执行,这个时候convmv会显示执行的结果,但不会真正对文件进行修改。并提示使用–replace参数进行修改。]
[七、]
[批量转换文件的编码]
[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 ‘{}‘
\;]