基于apache的subversion与bugzilla组合的中文问题

这个折腾了半天时间,记录下来

起因:

打算将svn的log提交到相应的bugzilla上作为注释,post-commit用的是perl WWW::Bugzilla,但总是出现形如?\228?\184?\173?\230?\150?\135(“中文”二字的UTF-8,十进制),不知为何?

首先从ubuntu本身来搞,基本找不到这样的问题,难得有个是windows的,设置LANG=zh_CN.UTF-8,APR_ICONV_PATH,居然就搞定了。于是参考。将/etc/default/locale也改成zh_CN.utf8——linux的这个未免太不统一了。

重启apache,失败……

 

干脆硬搞算了:

 

sub combine3
{
    my ($in) = @_;
    my $result;
    if ($in =~ /\?\\(\d+)\?\\(\d+)\?\\(\d+)/)
    {
        return pack("C*", $1,$2,$3);
    }
    else
    {
        print STDERR "Error occupied! call admin\@domain.com\n";
        exit(1);
    }
}

sub check_log
{
    my ($log) = @_;
    my $magic="<abcdefghijk123>";
    while ($log =~ s/((\?\\\d{1,3}){3})/$magic/)
    {
        #print "1 $1\n";
        my $rep = combine3($1);
        $log =~ s/$magic/$rep/;
        #print $log, "\n";
        #print "----\n";
    }
    return $log;
}

 

完了后还有一点要注意:

 

WWW::Bugzilla的addition_comment接受UTF8,放到bugzilla上却是乱码,需要decode('utf-8', xxx)才算完事。

 

不同系统间的编码整合真烦!UTF8何苦为难UTF8呢……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值