首页 > 其他 > 详细

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

时间:2014-03-18 07:23:51      阅读:566      评论:0      收藏:0      [点我收藏+]

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

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

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

  • legend
  • setStickLabels
  • title

bubuko.com,布布扣

bubuko.com,布布扣

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

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

Legend 乱码

1
2
3
4
5
//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

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

1
2
3
4
5
6
7
8
9
10
11
12
//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         }

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

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

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

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

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

直接

1
:%s/FF_DEFAULT/FF_SIMSUN/g

就搞定了

title 乱码

1
2
3
4
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

stickLables 乱码

1
2
3
4
5
6
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;

还有个地方也有FF_DEFAULT,

1
2
3
4
5
6
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;

总结:

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

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

bubuko.com,布布扣

bubuko.com,布布扣

【原创】jpgraph中文乱码问题的解决,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/phpgcs/p/jpgraph_chinese_messy_code.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!