Linux下有时需要对文本文件的编码格式进行转换,下面是在项目中用过的一些shell命令。
1. nkf命令(下载安装地址:http://ie.u-ryukyu.ac.jp/~kono/nkf/),应该是日本人做的,安装日文版的REHL这个命令会自带。
手动下载安装步骤:
A.编译nkf。下载nkf之后解压,然后在解压目录输入:make
例如: [root@localhost nkf206]# make
cc -O -Wall -o nkf nkf.c utf8tbl.o
编译生成nkf文件.
B.nkf复制到系统目录(或者建个软链接ln -s)
[root@localhost nkf206]#cp nkf /usr/local/bin/
要想对文本内容的字符编码进行转换,具体参数含义
-j : 转换为 JIS 编码(ISO-2022-JP),默认linux中转换成window : nkf -sxLw
-e : 转换为 EUC 编码
-s : 转换为 Shift-JIS 编码
-w : 转换为 UTF-8 编码(无BOM)
-Lu : 转换为 unix 换行格式(LF)
-Lw : 转换为 windows 换行格式(CRLF)
-Lm : 转换为 macintosh 换行格式(CR)
-g(--guess) : 自动判断编码并显示
--version : 显示版本
--help : 显示帮助
nkf -swLw
window转换成linux : nkf -wxLu
对文件内容编码转换(从UTF-8转为Shift-JIS)并保存替换原文件:nkf -sLw -overwrite ${filename}
2.使用iconv命令也可以转换文字编码,格式为:iconv -f encoding -t encoding inputfile -o outputfile
比如将一个UTF-8编码的文件转换成GBK编码的文件
iconv -c -f utf-8 -t gbk file1 -o file2
-f:转换前编码;-t:转换后编码;-c:表示从输出中忽略无效的字符;-o:输出文件路径,另外需要注意inputfile和outputfile两个文件名不能一样
3.文件名编码转换convmv
有时从Window用户上传的文件名是GBK编码的,在Linux下看到的文件名是乱码,需要转换。
convmv -f gbk -t utf-8 --notest ./*.txt
--notest:不加上这个参数就不会真正转换,另外加上-r可以对目录下的文件名进行递归转换
参照资料:
1. MPU Linux下配置安装nkf http://blog.csdn.net/MPU/article/details/1947273
2. wangxianshouhttp://blog.csdn.net/wangxianshou/article/details/9033233
3. wangxianshou http://blog.csdn.net/wangxianshou/article/details/9033293