Linux中文件编码转换
在工作中,经常会遇到使用操作系统不一样的环境,从而导致在不同环境下的文件编辑的编码是不一样的,Windows默认是GBK编码格式,Linux默认是UTF-8的格式,这样就会出现把GBK编码的文件拷贝到Linux下出现乱码情况,很是让人头疼,下面给大家介绍下GBK->UTF-8文件编码批量转换。
Linux命令-enca 查看文件的编码
Enca语法
1 | Usage: enca [-L LANGUAGE] [OPTION]... [FILE]... |
Enca用法
1 | enca -L zh_CN file 检查文件的编码 |
除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来, 而”iconv”则会报错。这对于脚本编写是比较方便的事情。
转换单个文件的编码
1 | enca -L none -x utf-8 index.html |
转换多个文件的编码
1 | enca -x utf-8 * |
Linux文件名编码批量转换–convmv
Convmv语法
1 | convmv -f 源编码 -t 新编码 [选项] 文件名 |
Convmv 常用参数
1 | -r 递归处理子文件夹 |
示例
转换一个文件由GBK转换成UTF-8
1 | convmv -f GBK -t UTF-8 --notest utf8 filename |
GBK->UTF-8文件编码批量转换脚本
1 | find default -type f -exec convmv -f GBK -t UTF-8 --notest utf8 {} -o utf/{} \; |
使用iconv 转换
Iconv语法
1 | iconv -f encoding -t encoding inputfile |
示例
单个文件转换
1 | iconv -f GBK -t UTF-8 file1 -o file2 |
批量转换
1 | find default -type d -exec mkdir -p utf/{} \; |
这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。