程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> JpGraph中文亂碼問題

JpGraph中文亂碼問題

編輯:PHP基礎知識
 

JpGraph是一個PHP的圖形類庫,可以方便地生成各種柱狀圖,餅圖,折線圖等等,而且還可以方便地加文字。但是,中文的情況就稍微麻煩了一點。在JpGraph中默認是要把字符串轉成utf8的,但是如果你的文件本身就是utf8的,並且要用中文字體,它還會轉一遍,結果多轉了一次,就會出現亂碼。
除了編碼問題,還有就是字體問題。為了試驗中文顯示,專門拷了一個simsun.ttc過來是,在代碼裡用FF_SIMSUN就可以正確顯示中文,但是如果改用自己設置的FF_CHINESE,也就是uming.ttf,就又亂碼了,而且和simsun.ttf亂碼時的不一樣。 後來發現FF_CHINESE和FF_BIG5是一樣,是繁體字體,所以和用FF_SIMSUN的亂碼還不一樣。

解決以上問題的方法也就是傳遞正確的中文字符串給JpGraph,所以可以把字符串先轉成gb2312的,這樣JpGraph就可以正確轉換了。當然,這個方法比較麻煩,每次都需要,還可以直接修改jpgraph_ttf.inc.php,我用的是2.2版本的,大概在99到106行之間的:

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);
}
注釋掉已有代碼,直接返回$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;
}

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved