Heim > php教程 > php手册 > Hauptteil

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

WBOY
Freigeben: 2016-06-13 09:40:46
Original
810 Leute haben es durchsucht

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
Nach dem Login kopieren

记得下载一份 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         }
Nach dem Login kopieren

原创文章,转载请注明: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
Nach dem Login kopieren

就搞定了

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

还有个地方也有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;
Nach dem Login kopieren

总结:

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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage