2012年1月19日 星期四

[記事] 修正ProjectPier的Report甘特圖中文變亂碼的問題

屬於阿宅世界的技術文章,想看的再點開,切莫自誤 !


ProjectPier是個功能蠻齊全的專案管理工具。只是目前的版本還有不少小問題,其中之一是 Report 這個plugin產生的甘特圖只要碰到中文就全變成亂碼了。要改一下它的code才能正常顯示正常的 UTF-8 中文。改法如下

1. 依照 這篇教學 設定好 ProjectPier中的 JpGraph 這個library。其中字型的部份,如果你的作業系統是 CentOS,就不需要另外安裝字型檔,它們的路徑可以這樣查詢 :

shell> find / -name "*.ttf" | grep TrueType
/usr/share/fonts/zh_TW/TrueType/bsmi00lp.ttf
/usr/share/fonts/chinese/TrueType/ukai.ttf
/usr/share/fonts/chinese/TrueType/uming.ttf


只要設定好jpg-config.inc 中TTF_DIR, MBTTF_DIR, CHINESE_TTF_FONT 這幾個變數即可。然後並不需要去更動 jpgraph.php 中的iconv部份的程式碼。

2.修改 ProjectPier 安裝目錄下的 application/plugins/reports/models/Reports.class.php,把utf8_decode()全拿掉,把substr()全改成 mb_substr(),並將mob_substr中指定的字串長度改成適當的顯示長度

3. 修改 ProjectPier 安裝目錄下的 application/plugins/reports/library/jpgraph/src 下的jpgraph_gantt.class.php,將CreateSimple()函式中呼叫到 SetFont的部份中的Font 跟 size 改成 FF_BIG5 及適當的大小,eg.
$a->title->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
改成
$a->title->SetFont(FF_CHINESE, FS_NORMAL, 10);

p.s 如果你CHINESE_TTF_FONT設定成 ukai.ttf ,又設定是粗体字,JpGraph 會跳出錯誤訊息。

4. 收功

2 則留言:

  1. mark) into a sort of gb2312 style (mistakes in code either). I suppose it is because i did not correct jpr-config.inc in a right way. Could you let me know how to do it? Thank you!


    cymby.hs@gmail.com

    回覆刪除
  2. Follow your instruction, i have changed the ??(question mark) into a sort of gb2312 style (mistakes in code either). I suppose it is because i did not correct jpr-config.inc in a right way. Could you let me know how to do it? Thank you!

    cymby
    cymby.hs@gmail.com

    回覆刪除