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

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卷).(清华出版.潘凯华.刘中华).part2

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

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

    美容院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