zoukankan      html  css  js  c++  java
  • 【原创】jpgraph中文乱码问题的解决

    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
    

    记得下载一份 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;                                                                                                                                          
      1         }
    

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

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

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

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

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

    直接

    :%s/FF_DEFAULT/FF_SIMSUN/g
    

    就搞定了

    title 乱码

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

    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;     
    

    还有个地方也有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; 
    

    总结:

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

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

  • 相关阅读:
    Ubuntu 12.04 + nginx + php5 + phpfpm安装,并进行多站点配置
    PHP的FTP类
    php操作mongodb 分组排序
    mongodb 条件操作符
    PHP匿名登录FTP
    PHP连接到FTP服务器注意事项
    Java SE第二讲 原生数据类型Primitive Data Type
    java se 第五讲 运算符续
    Java SE 第一讲 入门jdk的下载安装
    Java SE第三讲:原生数据类型的使用陷阱
  • 原文地址:https://www.cnblogs.com/phpgcs/p/jpgraph_chinese_messy_code.html
Copyright © 2011-2022 走看看