批量文件编码转换从gb2312到utf8

批量文件编码转换从gb2312到utf8

刚才把windows下使用的php程序放到windows来使用,发现出现中文的地方都是乱码,是文件编码问题。利用linux自带iconv和perl写了一个脚本来批量转换
没什么技术含量,希望对大家有用
###############################
$d=`ls *.php`;
@list=split /\n/,$d;
foreach $file (@list){
print "converting $file\n";
system("cp $file ./bak");
system("iconv -f gb2312 -t utf8 $file -o $file.'.out'");
system("mv $file.'.out' $file");
system("chmod 777 $file");
}
###############################
恩,我是搞java的,上面这些基本上看懂了。

但请教一下,你这个只是转换当前目录下的php文件吧,有没有把目录下所有文件,包括子目录的文件,都转换的命令?
不懂java,只会shell

for i in `find ./  -type f -name *` ; do iconv $i -f gb2312 -t utf8 -o ${i}.tmp && mv ${i}.tmp $i ; done
shell命令可真是强啊!!  

这个要用java来实现至少得50行以上代码。

shell 就是强!!不服不行啊!!!!!
那反过来又怎么把utf8的转换到gb2312的呢?
我最近在fc5上架设了一个vsftp,在浏览器上看到的中文名称的文件都是乱码,有些浏览器可以设置编码为utf8就可以显示,但这并不是解决问题的根本办法。如果在我服务器这边能自动转换一下,别人浏览起来就会很方便了。
我找了很多都没找到解决的办法,有谁遇到过这种问题并能解决的么?急盼回复
给我提个解决ftp字符编码的问题好吗,详细问题请看你提的关于“批量文件编码转换从gb2312到utf8"的解决办法。
可以直接回复我zwylinux@163.com
现谢过了。
谢谢楼主教我iconv这个命令,对我真是太有用了。
我和同学一起做一个java的项目,我用的是FC5,他用的是Win XP。我编的java文件拿到他那里,里面的中文都是乱码。现在我做了个shell脚本,把我的源文件批量转换一下,就OK啦。
[code:1]#!/bin/bash
fileList=`ls */*.java */*.html`
if [ ! -d gb ]; then
        mkdir gb
fi
for fileName in $fileList; do
        packName=${fileName%/*}
        if [ ! -d gb/$packName ]; then
                mkdir gb/$packName
        fi
        newName=gb/$fileName
        iconv -f utf8 -t gb2312 $fileName -o $newName --verbose
        echo "${fileName}(utf8) -> ${newName}(gb2312)"
done[/code:1]