shell文件内容编码转换

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),默认
-e           : 转换为 EUC 编码
-s           : 转换为 Shift-JIS 编码
-w           : 转换为 UTF-8 编码(无BOM)
-Lu          : 转换为 unix 换行格式(LF)
-Lw          : 转换为 windows 换行格式(CRLF)
-Lm          : 转换为 macintosh 换行格式(CR)
-g(--guess)  : 自动判断编码并显示
--version    : 显示版本
--help       : 显示帮助
linux中转换成window     :   nkf -sxLw 

     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

你可能感兴趣的:(Linux基础)