批量更改文件编码格式 utf8到gb2312
一.查看文件编码
file name;//可以显现文件的编码格式(有的系统不可以)
二.文件编码转换
使用iconv转换,
iconv -f encoding -t encoding inputfile;
例如:iconv -f utf-8 -t gb2312 file1;
用法:iconv [选项..] [文件]
-f, 原始编码
-t,输出编码
信息:
-l,---list 列举系统所有安装的已知字符集
输出控制:
-c 从输出中忽略无效的字符
-o ---output 输出文件
实例:遍历目录下的所有文件,改变utf8编码到gb2312
for i in `find ./ -type f -name '*.txt'`;
do
echo $i
echo ${i}.tmp
iconv -f utf-8 -t gb2312 $i>${i}.tmp
mv ${i}.tmp $i;
done
问题记录:
iconv转换失败,脚本主机没有暗转gb2312编码,只有gbk,导致一开始转化老是失败。
转载1:
- #!/bin/bash
- #1.变量定义
- directory="/home/wzy/Downloads/execl"
- f_encoding="utf-8"
- t_encoding="gbk"
- #2.遍历子目录
- for dir in `ls $directory`
- do
- if [ -d $directory/$dir ]
- then
- #3.遍历子目录的文件
- for file in `ls $directory/$dir`
- do
- if [ -e $directory/$dir/$file ]
- then
- #4.文件类型转换
- iconv -f $f_encoding -t $t_encoding $directory/$dir/$file -o $directory/$dir/iconv.$file
- #5.删除原始文件
- if [ $? -eq 0 ]
- then
- rm $directory/$dir/$file
- fi
- fi
- done
- fi
- done