关于Bugzilla图形报表中文乱码问题

自从汉化完bugzilla2.18中文后,图形报表中文乱码问题还是没有解决,经过反复实验,终于找到一个方法。**如果你已经有些数据是使用非utf-8编码的请不要按照如下方法做。不过可以参考下。

首先我们知道GD显示中文必须使用unicode。

其次perl要能使用TrueType字体,并且操作系统具备这样的字体。

我的做法是:

1、把bugzilla的汉化包,转成utf-8编码。方法是找个编辑器(比如notepad, editplus,UtrEdit等),打开另存为...选编码utf-8。其实只要针对有中文的文件进行就可以了。不知道怎样使用编辑器的“宏”,一个个的存可累4偶了。—。—!!

2、修改相关文件,指定GD使用的字体,具体使用什么字体可根据实际情况修改。

%BUGZILLA%/template/cn/default/reports/report-bar.png.tmpl大约在31行后面增加代码(兰色):

......

[% FILTER null;
  USE graph = GD.Graph.bars(width, height);
  graph.set_title_font("C:/WINNT/Fonts/SURSONG.TTF",16);
  graph.set_x_label_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_y_label_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_x_axis_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_y_axis_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_legend_font("C:/WINNT/Fonts/SURSONG.TTF",10);  
  graph.set(x_label           => col_field_disp,
            y_label           => y_label,
            y_tick_number     => 8,

......

%BUGZILLA%/template/cn/default/reports/report-line.png.tmpl大约在37行后面增加代码(兰色):

......

[% FILTER null;
  graph.set_title_font("C:/WINNT/Fonts/SURSONG.TTF",16);
  graph.set_x_label_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_y_label_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_x_axis_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_y_axis_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_legend_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set(x_label           => col_field_disp,
            y_label           => y_label,
            y_tick_number     => 8,

......

%BUGZILLA%/template/cn/default/reports/report-pie.png.tmpl大约在26行后面增加代码(兰色):

......

[% FILTER null;
  USE graph = GD.Graph.pie(width, height);
  graph.set_title_font("C:/WINNT/Fonts/SURSONG.TTF",16);
  graph.set_label_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_value_font("C:/WINNT/Fonts/SURSONG.TTF",10);
  graph.set_legend_font("C:/WINNT/Fonts/SURSONG.TTF",10);

  graph.set(title          => col_field_disp,
            pie_height     => 20,
            suppress_angle => 2,
            start_angle    => 180);

......

这样修改以后,基本产生的报表不再乱码。

不再乱码的图形报表

对于已经有非utf-8的BUG数据的时候以上方法还不能解决问题。最好保持原来编码(应该是gb2312或者GBK什么的),然后使用Encode模块,对查询出来的数据先进行utf-8编码,再图形报表。对数据进行编码问题没有仔细研究,主要的report.cgi实在还看不懂。努力学习perl中...

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值