QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5333|回复: 6

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

[复制链接]
发表于 2006-4-27 23:16:00 | 显示全部楼层 |阅读模式
刚才把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");
}
###############################
发表于 2006-4-29 15:57:00 | 显示全部楼层
恩,我是搞java的,上面这些基本上看懂了。

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

使用道具 举报

发表于 2006-5-8 00:41:23 | 显示全部楼层
不懂java,只会shell

for i in `find ./  -type f -name *` ; do iconv $i -f gb2312 -t utf8 -o ${i}.tmp && mv ${i}.tmp $i ; done
回复

使用道具 举报

发表于 2006-5-8 14:35:10 | 显示全部楼层
shell命令可真是强啊!!  

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

shell 就是强!!不服不行啊!!!!!
回复

使用道具 举报

发表于 2006-5-12 20:03:58 | 显示全部楼层

ftp字符编码

那反过来又怎么把utf8的转换到gb2312的呢?
我最近在fc5上架设了一个vsftp,在浏览器上看到的中文名称的文件都是乱码,有些浏览器可以设置编码为utf8就可以显示,但这并不是解决问题的根本办法。如果在我服务器这边能自动转换一下,别人浏览起来就会很方便了。
我找了很多都没找到解决的办法,有谁遇到过这种问题并能解决的么?急盼回复
回复

使用道具 举报

发表于 2006-5-12 20:06:32 | 显示全部楼层
给我提个解决ftp字符编码的问题好吗,详细问题请看你提的关于“批量文件编码转换从gb2312到utf8"的解决办法。
可以直接回复我[email protected]
现谢过了。
回复

使用道具 举报

发表于 2006-5-19 19:00:56 | 显示全部楼层
谢谢楼主教我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]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 08:24 , Processed in 0.109599 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表