近日一直被MT引用通告乱码所困扰,虽然Google到了Hedong的消除收到trackback的乱码文章,还有Windix的Trackback乱码:我的解决方法。但一由于我的空间上没有安装CGI的Text::Iconv模块,二Windix并没有提供自己写的编码转换Douconv库,我只能望洋兴叹。不过我用的空间是Linux主机,安装有iconv common包,可以使用iconv命令,因此尝试用Perl执行命令来解决转码问题,下面是具体的解决方法(当然,这里要感谢Hedong前辈已有的方法,我是在其基础上稍加变化实现的):
在$MTHOME/lib/MT/App/Trackback.pm的ping函数中找到:
my $ping = MT::TBPing->new;
$ping->blog_id($tb->blog_id);
$ping->tb_id($tb_id);
$ping->source_url($url);
$ping->ip($app->remote_ip || '');
在其前面加上:
#################convert gb2312 into utf-8 if necessary#######
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
if ($res->is_success) {
my $content=$res->content;
if ($content =~ /text\/html.*charset=.*gb.*>/gi ){
$excerpt = `echo $excerpt | iconv -f GB2312 -t UTF-8`;
$title = `echo $title | iconv -f GB2312 -t UTF-8`;
$blog_name = `echo $blog_name | iconv -f GB2312 -t UTF-8`;
}
}
##############end convert gb2312 to utf8##################
完毕!
上述修改在MT 3.x版本上适用,依照Hedong所说,如果系统安装了mt-blacklist,则需要修改$MTHOME/extlib/jayallen/MTBlPing.pm,位置相同。
ASDFASDF
許=B35C 功=A55C 蓋=BB5C
jimpim
我的blog空间没有iconv组件,使用了一个类来解决问题。详见《不用iconv组件也能支持简繁体》http://www.mornshine.net/index.php?job=single&art=9
魂牵梦萦
test
woj
谢谢您
woj
不错,正是我需要的:)
速泡网
amao
可以使用转换表的,sablog-x里面就有解决方法
sangern
但愿有用
平生一笑
这个好像很早了,现在记得有个插件可以实现自动解码的,不过非UTF-8的Blog好像也不多了