2009年1月7日星期三

mantis统计图的中文显示配置

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://wangbp.blogbus.com/logs/16005891.html

你是否正确安装了JPGraph
默认情况下,Mantis的图形报表是关闭的,需要安装JPGraph模块。

1).
可以在[url]http://www.aditus.nu/jpgraph/jpdownload.php[/url]下载最新版的JPGraph,请注意JPGraph 1.x 版本是针对php42.x 是针对php5的,请下载对应版本。

2).
将下载包解压到一个目录下,我解压到mantis下的jpgraph目录,定义为$JPGraph

3).
然后在config_inc.php中添加下面几行:

$g_use_jpgraph = ON;
$g_jpgraph_path = './jpgraph/src/'; //
你也可以按照你的地址填写文件的绝对路径。

4).
php.ini";extension=php_gd2.dll"前面的分号删除,这个模块是JPGraph在显示图表和进行汉字编码转换是所必须的。

(3) JPGraph
的中文显示

据说1.0以后的版本已经能够很好的支持报表中文显示,但可能PHP5的问题,我这里还是乱码,这里列出参考别人的方法我所做的配置。

1)
如果你的界面语言是用简体中文或者繁体中文,那么你会看到图形中的汉字都是乱码,这是因为Mantis对于JPGraph的编码设置不正确造成的。
JPGraph
会自动将汉字转换为UTF-8编码,但是需要在调用JPGraph的时候对标题等SetFontMantis没有做这个操作,因此汉字显示出来都是乱码。
解决方法是增加对图形设置字体的代码;

2)
打开$mantis\core\graph_api.php,查找:graph_get_font(),在其中添加一行

'chinese_gbk' => FF_SIMSUN,

3)
config_inc.php文件中添加

$g_graph_font = 'chinese_gbk';

4)
打开$JPGraph\src\jpg-config.inc.php

查找 DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');
改为 DEFINE('CHINESE_TTF_FONT','simsun.ttc');

jpg-config.inc.php
也可以不改,如果生成的图形中的字体想由自己定义,可以这样改。

这个时候,如果你选择的语言是chinese_simplified,现在你的图形报表应该就可以显示中文了。

5)
但如果你选择语言跟我一样是chinese_simplified_utf8,则发现报表显示还是乱码。
原来JPGraph中处理的时候比较bt,只要看到字体设置是FF_SIMSUN,就认为字符串编码是GB2312,输出的时候都要转成UTF8
单实际上已经是UTF8了,根本不用转。

直接修改代码:

打开JPGraph下的jpgraph.php文件,搜索其中:
elseif( $aFF === FF_SIMSUN ) {
// Do Chinese conversion

if( $this->g2312 == null ) {
include_once 'jpgraph_gb2312.php' ;
$this->g2312 = new GB2312toUTF8();
}
return $this->g2312->gb2utf8($aTxt);
}
改为:
elseif( $aFF === FF_SIMSUN ) {
// Do Chinese conversion
/*
if( $this->g2312 == null ) {
include_once 'jpgraph_gb2312.php' ;
$this->g2312 = new GB2312toUTF8();
}
return $this->g2312->gb2utf8($aTxt);
*/
return $aTxt;
}
就是把转换编码的代码注释掉,最好不要直接删掉了,不然以后想改回来就麻烦了。

这样改实际是有些问题,如果mantis中有部分用户的语言选择为chinese_simplified,另一部分选择为chinese_simplified_utf8就不行了,
总会有部分人报表出现乱码。所以一个小组一定要统一阿:-)

目前图形报表中文显示应该没有问题了。

=============================================

放到mantis目录下的jpgraph,jpgraph子目录src下文件拷贝到jpgraph目录: 中文图形支持:(通常网上配置的支持中文图形均采用了使用GB2312编码的方式。本方法使用utf8.)修改:$mantis\core\graph_api.php,函数:graph_get_font(),在其中添加一行'simsun' => FF_SIMSUN,---------------------------------------------------拷贝simsun.ttc,simhei.ttf 到jpgraph目录下的fonts目录中config_inc.php 中添加:$g_default_language = 'chinese_simplified_utf8';DEFINE("TTF_DIR","./jpgraph/fonts/");$g_use_jpgraph = ON;$g_jpgraph_path = $g_absolute_path ."jpgraph/"; # dont forget the ending slash!$g_graph_font = 'simsun';$g_font_per_captcha = 'simsun.ttf';putenv("TZ=Asia/Shanghai");-----------------------------------------------------------------------------下载项目文档文件名乱码为%20之类的解决办法:修改file_download.php 100行:原: header( 'Content-Disposition:' . $t_disposition . ' filename="' . urlencode( $t_filename ) . '"' );新: header( 'Content-Disposition:' . $t_disposition . ' filename="' . $t_filename . '"' );去掉多余的urlencode。

2009-01-07


chenxu

没有评论: