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

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 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默认使用GBK编码,当遇到UTF-8编码的汉字时可能会出现乱码。解决方法如下: - 对于GBK编码的文件,只需将字体设置为FF_SIMSUN,如`$graph-&gt;title-&gt;SetFont(FF_SIMSUN, FS_BOLD, 12);`。 - 对于UTF-8编码,...

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

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

    php使用Jpgraph创建柱状图展示年度收支表效果示例

    在标题和轴标签设置中,特别使用了iconv函数来处理中文字符编码,避免了乱码问题。最后,使用Stroke()方法将生成的柱状图输出到浏览器。 通过本文,读者可以了解到Jpgraph库在PHP中的基本应用,包括如何引入Jpgraph...

    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与...

    (精选文档)Windows与Linux下MantisBT的安装与配置相关手册.docx

    如果使用UTF8编码,还需在jpgraph_ttf.inc.php文件中适当修改或注释代码。 **四、其他配置项** 1. **默认语言设置**:在config_inc.php中,设置$g_default_language为所需的默认语言,如'chinese_simplified'表示...

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

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

    mantis安装说明

    - **JPGRAPH安装与配置**:Mantis使用JPGRAPH库生成图表,若出现中文乱码,需安装并配置JPGRAPH库。首先下载并解压缩JPGRAPH至Mantis的library目录下,重命名为jpgraph。然后,编辑`jpgraph\jpgraph_ttf.inc.php`...

    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中的数据库...

    wamp 搭建 Mantis bug管理系统完全手册

    // 解决图形报表乱码问题 ``` 同时,修改`D:\mantis\jpgraph\src\jpgraph.php`文件中的`graph_get_font()`函数,添加`simsun`字体映射: ```php function graph_get_font() { $t_font_map = array( 'arial' =&gt; ...

    X-CRM v3.0

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

    mantis搭建

    2. **语言设置**:安装完成后,在任务栏右下角找到WAMP Server图标,点击右键选择“Chinese”以设置中文界面。 3. **Apache 和 MySQL 设置**:通过WAMP Server图标可以启动或停止Apache和MySQL服务,以及进入MySQL...

Global site tag (gtag.js) - Google Analytics