TrackBack乱码,没有安装Text::Iconv模块的解决办法

引用通告(1) 评论(8)

近日一直被MT引用通告乱码所困扰,虽然Google到了Hedong消除收到trackback的乱码文章,还有WindixTrackback乱码:我的解决方法。但一由于我的空间上没有安装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,位置相同。

引用通告(1)

被引用的日记: TrackBack乱码,没有安装Text::Iconv模块的解决办法

TrackBack URL for this entry: http://www.thinkjam.org/loveblog/tjtb.cgi/51.
如果您想引用这篇日记到您的Blog,
请复制上面的链接,放置到您发表文章时的相应界面中。

  思路非常简单:根据trackback ping中的url,将发送ping的页面除回来,然后解析其编码,如果是gbk或gb2312,则进行gb2312--->utf-8的转换。(注:我的blog用的是utf-8编码)   代码如下: ##########... 阅读更多细节

评论(8)

許=B35C 功=A55C 蓋=BB5C

我的blog空间没有iconv组件,使用了一个类来解决问题。详见《不用iconv组件也能支持简繁体》http://www.mornshine.net/index.php?job=single&art=9

不错,正是我需要的:)
速泡网

可以使用转换表的,sablog-x里面就有解决方法

但愿有用

这个好像很早了,现在记得有个插件可以实现自动解码的,不过非UTF-8的Blog好像也不多了

发表评论

最新发布

世界地球日
猛然间看到Google换了Logo,肯定是有什么大日子发生。果然,今天是一年…
Google提供域名Whois信息查询服务
昨天在DRL看到有坛友发此信息,追究起来,出处应该还是GSeeker,正好这…
入吾彀中
【解释】:彀:张满弓弩;彀中:指箭能射及的范围,比喻牢笼,圈套。进入了我的弓箭射…