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/

【原创】jpgraph中文乱码问题的解决的更多相关文章

  1. Rhythmbox中文乱码问题的解决

    Rhythmbox中文乱码问题的解决 Rhythmbox是Ubuntu自带的一款很优秀的音乐播放器,但是在处理中文时却不太友好,导入歌曲时中文会变成乱码 这个问题也是很好解决的. ** 1.Ctrl+ ...

  2. Sublime Text 3中文乱码问题的解决(最有效)

    Sublime Text 3中文乱码问题的解决(最有效) Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开 ...

  3. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法   JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQu ...

  4. (转)MySQL 插入数据时,中文乱码问题的解决

    MySQL 插入数据时,中文乱码问题的解决  原文:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当向 MySQL 数据库插 ...

  5. windows下mysql中文乱码, 配置解决方法

    内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内 ...

  6. eclipse中js中文乱码问题的解决办法

    在Eclipse中编辑JS文件简直是一种折磨,但是却总是很无奈得要去适应. 这里说一下Eclipse中,编辑JS文件时候,出现中文乱码问题的解决办法. 这个问题很容易想到是文件编码的问题,因此通常是修 ...

  7. XAMPP下MYSQL中文乱码问题的解决

    XAMPP下MYSQL中文乱码问题的解决 现象描述: 安装完成XAMMP后,内置有MySQL数据库. 新建好自己的数据库后通过hibernate往表里面添加一些中文信息时全部乱码变成“??”. 问题解 ...

  8. Pycharm 输出中文或打印中文乱码现象的解决办法

    1. 确保文件开头加上以下代码: # -*- coding:utf-8 -*- 还可以加上 import sys reload(sys) sys.setdefaultencoding('utf-8') ...

  9. get/post时中文乱码问题的解决办法

    1.文章1 最近遇到一个问题:用get方法传递中文有问题,用post没有问题. 问题简单的描述是这样的: <a href="userGroup.jsp?userGroupName=&l ...

随机推荐

  1. SQL精华应用

    [精确到纳秒的时间函数] SYSDATETIME().SYSUTCDATETIME()        ---- 精确程度取决于执行 SQL Server 实例的计算机硬件和 Windows 版本号 [ ...

  2. 正确遍历删除List中的元素方法(推荐)

    遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题.下面主要看看以下几种遍历删除List中元素的形式: 1.通过增强的for循环删除符合条件的多个元素 2.通过增强的for循环删除符合 ...

  3. JRE与JVM、JDK的区别

    JRE与JVM.JDK的区别 一. 详细介绍1.JVM -- java virtual machine JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程 ...

  4. J2EE环境搭建(三)配置Tomcat 7.0的局部数据源

    在J2EE环境搭建(一)中遗留下一个配置Tomcat数据源的问题,最近都在专心搞iOS的东西,由于J2EE布置了作业,所以又回过头来搞下J2EE.汗... 在这里我使用的是MySQL. 1.配置MyS ...

  5. 算法笔记_075:蓝桥杯练习 最短路(Java)

    目录 1 问题描述 2 解决方案 2.1 floyd算法解决 2.2 spfa算法解决   1 问题描述 问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从 ...

  6. javascript 自定义Map

      迁移时间:2017年5月25日08:24:19 Author:Marydon 三.自定义Map数据格式 需特别注意的是: js中没有像java中的Map数据格式,js自带的map()方法用于:返回 ...

  7. 【Datastage】在win10安装Datastge 8.7

    在win10安装提示Datastage提示如下错误: 强制安装: setup.exe -force 进入浏览器安装界面后 忽略"失败"即可成功安装.

  8. Layui 弹出层组件——layer的模块化开发实例应用

    Layui 弹出层组件——layer的模块化开发实例应用 1.首先在package.json中引入layer组件依赖 2.在源码中应用这个依赖 3.在源码中编写代码应用此组件 4.效果验证:点击日历上 ...

  9. 欧洲顶级音频播放软件AIMP

    http://zmingcx.com/europes-top-software-aimp-audio-player.html 音频播放软件众多,耳熟能详的Winamp.Foobar2000.千千静听. ...

  10. 【转载】Hibernate 关联关系

    http://www.cnblogs.com/whgk/category/910622.html