Skip to content

龙口市中际包装机械有限公司

Site Tools
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color blue color green color
位置: 首页 arrow 文章 arrow 最新文章 arrow Dotproject甘特图乱码解决
Dotproject甘特图乱码解决 打印

使用环境:
Windows XP SP2
Apache 2.2.6
PHP 5.2.4
Mysql 5.0.37
所有配置皆为UTF-8编码

使用sourceforge.net下载的dotproject 2.1.1 stable版,汉化文件是从

http://rt.openfoundry.org/Foundry/Project/Download/?Queue=238下载的dotProject_2.1_RC2_20070529_UTF-

8_Chinese_by_Markwu.rar里面包含的local文件。
去下载最新版For PHP5的Jpegraph 2.3 替换Dotproject自带的Jpegraph目录,参照Dotproject的文件修改jpg-

config.inc.php。
1、将simsun.ttc,simhei.ttf拷贝到lib/fonts下
2、指定TTF文件所在位置
define('TTF_DIR', './lib/fonts/');
1和2这两步也可以不做,让JPGraph自己到Windows目录去找
3、定义CUSTOM_TTF_FONT变量,这样就不用去将Modules下的Gantt.php里面CUSTOM_TTF_FONT改成FF_SIMSUN。
DEFINE('CHINESE_TTF_FONT','simsun.ttc');
define('FF_CUSTOM', 30);
define('CUSTOM_TTF_FONT', CHINESE_TTF_FONT);
define('CUSTOM_TTF_FONT_BOLD', CHINESE_TTF_FONT);
define('CUSTOM_TTF_FONT_ITALIC', CHINESE_TTF_FONT);
define('CUSTOM_TTF_FONT_BOLDITALIC', CHINESE_TTF_FONT);
4、让UTF-8正常工作
DEFINE("LANGUAGE_CYRILLIC",true);
DEFINE("CYRILLIC_FROM_WINDOWS",true);
DEFINE('LANGUAGE_CHARSET', 'utf-8');

5.修改jpgraph_ttf.inc.php 240行
     /* Chinese fonts */
     FF_SIMSUN  =>  array(FS_NORMAL =>'simsun.ttc', 
      FS_BOLD =>'simhei.ttf',  
      FS_ITALIC =>'simsun.ttc',  
      FS_BOLDITALIC =>'simhei.ttf' ),
     FF_CHINESE  =>   array(FS_NORMAL =>CHINESE_TTF_FONT,
      FS_BOLD =>'CHINESE_TTF_FONT',
      FS_ITALIC =>'CHINESE_TTF_FONT',
      FS_BOLDITALIC =>'CHINESE_TTF_FONT' ),

有第3步,jpgraph_ttf.inc.php也可不必修改。 DotProject甘特图乱码,我自己看了3天,主要是PHP水平太水,找

不到哪里负责哪部分的功能实现。
做完以上5步,甘特图大部分都是汉字了,只是任务列表显示的任务还是乱码,这是怎么回事?

module\tasks\gantt.php 360行
        if ( $locale_char_set=='utf-8' && function_exists('utf8_decode') ) {
                $name = utf8_decode($name);
        }
把第361行的$name = utf8_decode($name)注释掉,本来就是UTF-8编码环境,不需要再解码。 这样任务列表也是正

常的汉字了。

TIPS:
1、php.ini 里的memory_limit设置大些,设置成4M时,Jpgraph就报错:内存不足。
2、PHP General :: Assigning the return value of new by reference is deprecated 出这个错误的解决。
将track_errors 设置为Off即可。产生这个Strict错误是因为dotproject里使用&返回new关键字创建的对象的地址

,而&这个符号在PHP5里已不推荐使用。在error_reporting设为E_ALL& ~E_NOTICE,而打开track_errors时,

Jpgraph库还是可以捕捉到这个警告,最终导致甘特图不显示。

 
Advertisement