July 11, 2004

消除收到trackback的乱码乱码

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

#################convert gb2312 into utf-8 if necessary#######
require Text::Iconv;
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 ){
my $converter = Text::Iconv->new("GB2312","UTF-8");
$excerpt = $converter->convert($excerpt);
$title = $converter->convert($title);
$blog_name = $converter->convert($blog_name);
}
}
##############end convert gb2312 to utf8##################

  将上述代码,加入到$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 || '');
几行的前面即可。
  注意,如果系统安装了mt-blacklist,则需要修改$MTHOME/extlib/jayallen/MTBlPing.pm,位置相同

Posted by Hilton at July 11, 2004 05:58 PM | TrackBack
Comments

这个主意有意思,我想在我的BLOG上尝试一下,依照这个原理开发

Posted by: zx.asd at December 7, 2004 03:25 PM

Was browsing through blogspot when I stumbled here

Posted by: tit enormous natural at November 13, 2004 05:57 AM

Parler vouz francais?

Posted by: Jen at November 9, 2004 06:54 PM

这是perl吧?
有没有php版本的呀?可以使用到wordpress的

Posted by: mulberry at July 14, 2004 03:52 PM

谢谢提醒,两个建议都已采纳!

Hilton

Posted by: Hilton at July 12, 2004 08:50 AM

另外,trackback的字体太小,不耐看,MT都是这样,调大点吧。

Posted by: birong at July 11, 2004 10:45 PM

第一次PING不出去。
估计:这种动态连接,PING出去时,还不能REQUEST,这样hedong想试图取回该网页的charset就失败了,所以建不了trackback.之后再编辑,因该动态连接已可以request了,所以hedong就可以成功转码了。
但似乎还不彻底,weblog后是一堆方块,没有把发送方的blog名字转为UTF-8

Posted by: birong at July 11, 2004 10:38 PM
Post a comment









Remember personal info?