`
joe_yee
  • 浏览: 9494 次
社区版块
存档分类
最新评论

php JpGraph使用和中文乱码(转)

    博客分类:
  • PHP
阅读更多

在使用JpGraph的时候我一般是把它的类库放到了程序的根目录下面
(解压之后的src中的文件,除了Examples文件夹之外)在用的时候只需要include就可以了

 

还可以将解压之后的src中的文件重命名为jpgraph,将它放到d盘,再在php.ini文件中添加到include_path中,

我的如下:
include_path = ".;c:/php/includes;d:/wamp/library;d:/jpgraph"

 

 

中文乱码

 

JpGraph是一个PHP的图形类库,可以方便地生成各种柱状图,饼图,折线图等等,而且还可以方便地加文字

。但是,中文的情况就稍微麻烦了一点。在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身

就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。

除了编码问题,还有就是字体问题。为了试验中文显示,专门拷了一个simsun.ttc过来是,在代码里用

FF_SIMSUN就可以正确显示中文,但是如果改用自己设置的FF_CHINESE,也就是uming.ttf,就又乱码了,而

且和simsun.ttf乱码时的不一样。 后来发现FF_CHINESE和FF_BIG5是一样,是繁体字体,所以和用FF_SIMSUN

的乱码还不一样。

解决以上问题的方法也就是传递正确的中文字符串给JpGraph,所以可以把字符串先转成gb2312的,这样

JpGraph就可以正确转换了。当然,这个方法比较麻烦,每次都需要,
还可以直接修改jpgraph_ttf.inc.php。我的JpGraph为3.0.7版本,大概在178到186行之间的代码改为如下:
 elseif( $aFF === FF_SIMSUN ) {
            // Do Chinese conversion
            /*if( $this->g2312 == null ) {
                include_once 'jpgraph_gb2312.php' ;
                $this->g2312 = new GB2312toUTF8();
            }
            return $this->g2312->gb2utf8($aTxt);*/
            return $aTxt;
        }
但是我还是不喜欢改动源码,可以用iconv("UTF-8","GB2312//IGNORE","简体中文 繁體中文 test")函数
先将要显示的字转换为GB2312。
 
右上角的那些中文显示有点难度,因为那个类没有SetFont方法,也就是说那东西是不能显示中文的。所以我

就改了基础类库 
修改了jpgraph_legend.inc.php文件里的。 
class Legend 类中有这样一句 
   private $font_family=FF_FONT1,$font_style=FS_NORMAL,$font_size=12; 
我把他改为 
private $font_family=FF_SIMSUN,$font_style=FS_NORMAL,$font_size=8; 
就OK了。

下面是一个简单列子:
<?php
include 'jpgraph/jpgraph.php';
include 'jpgraph/jpgraph_line.php';

$data = array(19 , 23 , 34 ,36, 50 , 60 , 65, 70 , 78); //模拟数据
$graph = new Graph($width = 400 , $height = 300); //创建新的Graph对象
$graph->SetScale("textlin"); //设置刻度模式
$graph->img->SetMargin(30 , 30 , 80 , 30) ; //设置图表边界

$graph->title->Set(iconv("UTF-8","GB2312//IGNORE","简体中文 繁體中文 test")) ; //设置图表标题
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); // 设置中文字体
$graph->title->SetFont(FF_CHINESE,FS_BOLD);
$lineplot = new LinePlot($data); //创建新的LinePlot对象
$lineplot->SetLegend(iconv("UTF-8","GB2312//IGNORE","数据1"));//设置图例文字
$graph->subtitle->SetFont(FF_SIMSUN);
$graph->subsubtitle->SetFont(FF_SIMSUN);
$lineplot->SetColor("red"); //设置曲线颜色
$graph->Add($lineplot); //在统计图上绘制曲线

$data2 = array(20 ,30 ,45 , 23 , 45 , 69 , 60 , 79 , 80);
$lineplot = new LinePlot($data2); //创建新的LinePlot对象
$lineplot->SetLegend(iconv("UTF-8","GB2312//IGNORE","数据2"));//设置图例文字
$lineplot->SetColor("blue"); //设置曲线颜色
$graph->Add($lineplot); //在统计图上绘制曲线
$graph->Stroke() ; //输出图像*/

分享到:
评论

相关推荐

    PHP之JPgraph横坐标中文乱码问题

    今天突然提及的操作之php的JPgraph横坐标中文乱码问题,迫不及待 测试了一下, 尝试了几遍,都是乱码,好不容易没有乱码了,却报错。 解决JPgraph的横坐标显示,中文乱码问题,横坐标数组资源。

    Jpgraph 3.5.0b1 Php画图表Chart 组件 for SAE修改版2

    原版支持中文不大好,会乱码。 现在原版基础上修改支持 新浪云主机 sina SAE 上运行支持中文的版本。 SAE 上只支持4种中文字体 宋体、楷体、文泉驿正黑、文泉驿微米黑。 调用方式: $graph-&gt;title-&gt;SetFont(FF...

    Jpgraph 3.5.0b1 Php画图表Chart 组件 for SAE修改版

    原版支持中文不大好,会乱码。 现在原版基础上修改支持 新浪云主机 sina SAE 上运行支持中文的版本。 SAE 上只支持4种中文字体 宋体、楷体、文泉驿正黑、文泉驿微米黑。 调用方式: $graph-&gt;title-&gt;SetFont(FF_...

    php报表之jpgraph柱状图实例代码

    新手初识jpgraph肯定会遇到各种各样的问题,比如乱码什么的,本案例是jpgraph3.0.7制作,也经过本人的多次实验,解决乱码问题 复制代码 代码如下: &lt;?php $datay=array(); //纵坐标数据 $datax=array(); //横坐标数据...

    PHP入门到精通

    12.4Jpgraph的安装与配置 文件系统(教学录像:52分24秒) 13.1文件目录概述 13.2文件处理 13.3目录处理 13.4文件处理的高级应用 13.5文件上传 面向对象(教学录像:30分18秒) 14.1面向对象的基本概念 14.2PHP与...

    PHP入门到精通02

    12.4Jpgraph的安装与配置 文件系统(教学录像:52分24秒) 13.1文件目录概述 13.2文件处理 13.3目录处理 13.4文件处理的高级应用 13.5文件上传 面向对象(教学录像:30分18秒) 14.1面向对象的基本概念 14.2PHP与...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    美容院SPA会员管理系统(含微信端) v2.0

    权限运用了Auth类认证,权限可以细分到每个功能,增删改查功能一应俱全,整合了PHPExcel导出功能,数据分析图形使用了Jpgraph图表安装说明1、把mms2.sql 导入到MYSQL数据库中,把App/Common/Conf/db.php中的数据库...

    X-CRM v3.0

    X-CRM基于thinkphp3.23+B-JUI1.2开发,权限运用了Auth类认证,权限可以细分到每个功能,增删改查功能一应俱全,整合了PHPExcel导出功能,数据分析图形使用了Jpgraph图表。安装说明1.把xycrm.sql 导入到MYSQL数据库中...

Global site tag (gtag.js) - Google Analytics