[Perl脚本]把整站所有文件由GB转化成utf-8的Perl脚本

| 2 Comments | 0 TrackBacks | WebBlog Articles

This is a SiteLog of Easun's WebBlog.。
恩。和国际接轨吧。 虽然我的Website基本上全是 utf-8 编码的,但是还是有部分是 gb2312 的。懒得一点一点修改,找Perl吧。
代码如下:

#!/usr/bin/perl -w
#
# GB->utf By Easun(路杨)
# http://easun.org
#
use strict;
use warnings;
use CGI();
my $cgi= new CGI;
use CGI::Carp qw(fatalsToBrowser); #打开浏览器检错,不需要请删除之。
use Encode qw/from_to/;
#WebSite的变量设置

#转化的原始路径:
my $mydir ='/webdata/perl'; #没有'/'
#要生成的转化完毕的文件存放路径。如果和上面路径相同就是覆盖
my $myoutdir ='/webdata/perl_new'; #没有'/'

print $cgi->header(-charset=>'utf-8');
&dodir($mydir,$myoutdir);
print 'That is all OK!';
exit;

sub dodir
{
my ($mydir,$outdir) =@_;
unless (-e $outdir) { mkdir ($outdir, 0777) ;}

opendir(DIR, $mydir);
my @files = readdir(DIR);
close(DIR);
print '<div><h3>当前目录:'.$mydir.'</h3><h3>目标目录:'.$outdir.'....</h3>';
for (0 .. $#files)
{
my $name = $files[$_];
next if $name eq '.';
next if $name eq '..';

if (-d $mydir.'/'.$name)
{
&dodir($mydir.'/'.$name,$outdir.'/'.$name);
next;
}
# 开始当前文件
print '<ul><li>开始转换'.$mydir.'/'.$name.'....</li>';
open(FILE, $mydir.'/'.$name);
my @data = <FILE>;
close(FILE);
my $data = join("", @data);
if ($data =~ /charset\=gb2312/) { $data =~ s/charset\=gb2312/charset\=utf-8/s; }
from_to($data, "gbk", "utf8");
open(FILE, ">$outdir/$name");
print FILE $data;
close(FILE);
print '<li>'.$outdir.'/'.$name.'convert success!</li></ul>';
# 结束
}
print '</div>';
}
1;

注意: 由于懒惰,我没有判断文件是否是文本性质(html或者xml,php,cgi,pl,js)的就全部转化了,也没有判断是否需要转化(即已经是utf-8编码),你可自己添加判断或者你使用生成新文件的办法,或者保证目录下面全部是需要转化的,不然,万一你的目录下面有图片文件或者zip.rar等2进制文件被转化了可就麻烦了哦:)

引用通告|TrackBacks (0)

本日志的TrackBack URL: http://easun.org/cgi-bin/mtos/tb_mt_41.pl/124.

本文相关评论|Comments (2)

那就来个先行备份的无责声明嘛,嘿嘿~~:P

呵呵:) 代码只是参考。只是提供思路而已 :P

发表该文评论|Leave a comment

最近发表|Recent Entries

[八卦]话说修路这件事

建国路貌似又在修。根本没有办法步行。这个让我想起来一个笑话:话说某A国人来北京,在东城区丢了一枚戒指,于是乎找警察,警察告诉他尽可能的帮他找。过了几天,此人发现整个东城的马路都挖开了,于是感叹曰:北京的警察真好。看来这个笑话的地点可以换在朝阳了?是不是某人的戒指又丢了?PS: 城市规划城市规划,年年挖年年修。。。生命不休,挖路不止…

[SiteLog]Blog升级到了 Movable Type Pro 4.25

Thisi is a SiteLog of Easun's WebBlog.今天终于升级到了 Movable Type Pro 4.25 ,貌似一切顺利,也没有发现什么特别大的改动?只是 Community Pack 变成了 1.62, Professional Pack 升级成了1.3 。其他的一切顺利,模版也没有修改,我甚至连重建前台HTML的事情都没有做。。。就这样吧,继续用这个风格,等有时间了再慢慢研究吧。如果非要说有什么修改的话,就是评论的登陆方式又丰富了很多,包括…

IE脚本错误,可以尝试以下办法

IE 脚本错误是个很麻烦的问题,一般定位都是 JS 引擎 和 VB 引擎出错。但是有时间反复注册 jscript.dll 和 vbscript.dll 也不能解决问题。具体表现 部分 js 解析正常,而部分就不行,尤其是基于 Web2.0的网站。不说别的,就连 ie7/ie8 本身第一次运行向导的"保存设置"也出错。其实研究下,貌似都出现在 XML 解释上? 重新注册…