[LAMP] DotProject 1.0.2-1 Linux中甘特图中文显示成乱码的问题解决方案 Wed, Feb 23. 2005
呵呵,好久没有写技术文章了。今天开始恢复吧。
从星期开始这一个月我的任务是修改 dotProject 以适应公司的应用,哈哈,可以正大光明的玩偶最喜欢的 PHP 了,开心啊。
第一个任务就是修改里面项目甘特图中中文乱码的问题。
原始的效果如下:
其中的乱码应该是“测试任务”
明显的 PHP 的 GD 库对中文支持的 bug,呵呵。上网搜索解决方法,在一个台湾网站上找到解决方法,根据和中文版的对应,修改方法如下:
- 找到 Linux 下存放字体的路径,我的系统是 /usr/X11R6/lib/X11/fonts/,然后找到 c:\window\fonts\,拷贝 sinsum.ttc 到这个目录下并且改名为 simsun.ttf。
- 修改 dotProject/lib/jpgraph/src/jpgraph.php。
L 27,把原来的 修改为
L176,在 后面增加一行
L1786,
- function TTF() {
- $this->style_names=array(FS_NORMAL=>'normal', FS_BOLD=>'bold', FS_ITALIC=>'italic', FS_BOLDITALIC=>'bolditalic');
- // File names for available fonts
- FF_COURIER => array(FS_NORMAL=>'cour', FS_BOLD=>'courbd', FS_ITALIC=>'couri', FS_BOLDITALIC=>'courbi' ),
- FF_GEORGIA => array(FS_NORMAL=>'georgia', FS_BOLD=>'georgiab', FS_ITALIC=>'georgiai', FS_BOLDITALIC=>'' ),
- FF_TREBUCHE => array(FS_NORMAL=>'trebuc', FS_BOLD=>'trebucbd', FS_ITALIC=>'trebucit', FS_BOLDITALIC=>'trebucbi' ),
- FF_VERDANA => array(FS_NORMAL=>'verdana', FS_BOLD=>'verdanab', FS_ITALIC=>'verdanai', FS_BOLDITALIC=>'' ),
- FF_TIMES => array(FS_NORMAL=>'times', FS_BOLD=>'timesbd', FS_ITALIC=>'timesi', FS_BOLDITALIC=>'timesbi' ),
- FF_ARIAL => array(FS_NORMAL=>'arial', FS_BOLD=>'arialbd', FS_ITALIC=>'ariali', FS_BOLDITALIC=>'arialbi' )
- );
- }
修改为
- function TTF() {
- $this->style_names=array(FS_NORMAL=>'normal', FS_BOLD=>'bold', FS_ITALIC=>'italic', FS_BOLDITALIC=>'bolditalic');
- // File names for available fonts
- FF_COURIER => array(FS_NORMAL=>'cour', FS_BOLD=>'courbd', FS_ITALIC=>'couri', FS_BOLDITALIC=>'courbi' ),
- FF_GEORGIA => array(FS_NORMAL=>'georgia', FS_BOLD=>'georgiab', FS_ITALIC=>'georgiai', FS_BOLDITALIC=>'' ),
- FF_TREBUCHE =>array(FS_NORMAL=>'trebuc', FS_BOLD=>'trebucbd', FS_ITALIC=>'trebucit', FS_BOLDITALIC=>'trebucbi' ),
- FF_VERDANA => array(FS_NORMAL=>'verdana', FS_BOLD=>'verdanab', FS_ITALIC=>'verdanai', FS_BOLDITALIC=>'' ),
- FF_TIMES => array(FS_NORMAL=>'times', FS_BOLD=>'timesbd', FS_ITALIC=>'timesi', FS_BOLDITALIC=>'timesbi' ),
- FF_ARIAL => array(FS_NORMAL=>'arial', FS_BOLD=>'arialbd', FS_ITALIC=>'ariali', FS_BOLDITALIC=>'arialbi' ),
- FF_SIMSUN => array(FS_NORMAL=>'simsun', FS_BOLD=>'simsun', FS_ITALIC=>'simsun', FS_BOLDITALIC=>'simsun' )
- );
- }
- 修改 dotProject/lib/jpgraph/src/jpgraph_gantt.php。
L413,把var $iFFamily=FF_FONT1,$iFStyle=FS_NORMAL,$iFSize=10;修改为
var $iFFamily=FF_SIMSUN,$iFStyle=FS_NORMAL,$iFSize=10;
L429,把$this->iText = $aTxt;修改为 - 修改 dotProject/modules/tasks/gantt.php。
L201,把$name = strlen( utf8_decode($a["task_name"]) ) > 25 ? substr( utf8_decode($a["task_name"]), 0, 22 ).'...' : utf8_decode($a["task_name"]) ;修改为
完成,刷新页面,结果如下:
一切OK。
开始看了那些大陆的帖子,都是讲在 Windows 下怎么处理的,只要把 FF_FONT 相关改成 FF_SIMSUN 就行了,那些台湾的帖子, 只说到第 3 步就说 OK 了,后来想想,估计他们用的都是 big5 编码的关系。我们都是 GB2312。
然后再一个俄文站点上找到第4步的修改方法,成功~
哈哈
« previous page
(Page 1 of 1, totaling 1 entries)
next page »


