Home > php教程 > php手册 > body text

【原创】jpgraph中文乱码问题的解决

WBOY
Release: 2016-06-13 09:40:46
Original
810 people have browsed it

php jpgraph库非常强大,可以在后台生成图片

后台生成在需要导出图表型报告的时候非常有用,当然,前端的可视化还是要用highcharts/echarts/anycharts等类库

比较麻烦的是中文乱码问题,有3个地方乱码:

  • legend
  • setStickLabels
  • title

先说明下我的环境和版本:

  • Ubuntu12.04
  • PHP 5.3.10-1
  • Jpgraph 3.5.0b1
  • 文件fileencoding=utf-8

Legend 乱码

  //jpgraph_legend.inc.php
  3 class Legend {
  2     public $txtcol=array();
  1     //public $font_family=FF_DEFAULT,$font_style=FS_NORMAL,$font_size=8; // old. 12
  0     public $font_family=FF_SIMSUN,$font_style=FS_NORMAL,$font_size=8; // old. 12
Copy after login

记得下载一份 simsun.ttc 放到 /usr/share/fonts/truetype

   //jpgraph_ttf.inc.php
  9         elseif( $aFF === FF_SIMSUN ) {
  8             // Do Chinese conversion 
  7             /*
  6             if( $this->g2312 == null ) {
  5                 include_once 'jpgraph_gb2312.php' ;
  4                 $this->g2312 = new GB2312toUTF8();
  3             }
  2             return $this->g2312->gb2utf8($aTxt);
  1              */
  0             return $aTxt;<br />
  1         }
Copy after login

原创文章,转载请注明:http://www.cnblogs.com/phpgcs/

上面的解决方法,我是参考了:

http://blog.csdn.net/yiping1980/article/details/6023144

然后后面的2个我认为就是找到title/stickLabels源码的地方,将 FFDEFAULT 改为 FFSIMSUN 即可

后来证明果然是这样,而且方便的是 这2个家伙都在 jpgraph.php 文件中

直接

:%s/FF_DEFAULT/FF_SIMSUN/g
Copy after login

就搞定了

title 乱码

  2         $this->title = new Text();
  1         $this->title->ParagraphAlign('center');
  0         //$this->title->SetFont(FF_DEFAULT,FS_NORMAL); //FF_FONT2, FS_BOLD<br />
  1         $this->title->SetFont(FF_SIMSUN,FS_NORMAL); //FF_FONT2, FS_BOLD
Copy after login

stickLables 乱码

  5 class AxisPrototype {
  4     public $scale=null;
  3     public $img=null;
  2     public $hide=false,$hide_labels=false;
  1     public $title=null;
  0     public $font_family=FF_DEFAULT,$font_style=FS_NORMAL,$font_size=8,$label_angle=0;
Copy after login

还有个地方也有FF_DEFAULT,

  5 class DisplayValue {
  4     public $margin=5;
  3     public $show=false;
  2     public $valign='',$halign='center';
  1     public $format='%.1f',$negformat='';
  0     private $ff=FF_DEFAULT,$fs=FS_NORMAL,$fsize=8;
Copy after login

总结:

  • 找到相关的源码(FF_DEFAULT)
  • 修改 jpgraphttf.inc.php, $aFF === FFSIMSUN 则直接返回 $aTx

原创文章,转载请注明:http://www.cnblogs.com/phpgcs/

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template