1. 云栖社区>
  2. >
  3. 正文

解决JpGraph中文乱码问题的方法

作者:用户 来源:互联网 时间:2016-12-21 20:53:11

文件new代码array图表

解决JpGraph中文乱码问题的方法 - 摘要: 本文讲的是解决JpGraph中文乱码问题的方法, JpGraph为什么会出现中文乱码 在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。如图所示 JpGraph使用详解之中文乱码解决

JpGraph为什么会出现中文乱码

在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。如图所示

JpGraph使用详解之中文乱码解决方法

解决JpGraph中文乱码问题的方法-jpgraph 中文乱码

取前篇的代码片断如下

 代码如下 复制代码

//设置图表的标题字体、大小
$graph->title->Set("Accumulated bar plots");
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

//和上面标题对应,设置标题的字体和大小
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

把它改为

//设置图表的标题字体、大小
$graph->title->Set(iconv("UTF-8","GB2312//IGNORE","网志博客信息统计表"));
$graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","X-标题"));
$graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","Y-标题"));

//和上面标题对应,设置标题的字体和大小
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

使用php函数据中文由UTF-8转为GB2312,记住由于iconv本身的一个bug,iconv在转换字符"—"到gb2312时会出错,所以在需要转成的编码后加上 "//IGNORE" 。

FF_SIMSUN表示中文简体,对应的字体文件是simsun.ttc,虽然FF_CHINESE和FF_BIG5也表示中文但是它们对应的字体文件是不同的,所以不要弄错。

下面是正确转换后生成的图

解决JpGraph中文乱码问题的方法-jpgraph4.0.1中文乱码

下面是本例调试的完整代码

 代码如下 复制代码

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');

$data1y=array(0,8,9,3,5,6);
$data2y=array(18,2,1,7,5,4);

// Create the graph. These two calls are always required
$graph = new Graph(500,400);
$graph->SetScale("textlin");

$graph->SetShadow();
$graph->img->SetMargin(40,30,20,40);//设置图形的边距

// Create the bar plots
$b1plot = new BarPlot($data1y);
$b1plot->SetFillColor("orange");
$b1plot->value->Show();
$b2plot = new BarPlot($data2y);
$b2plot->SetFillColor("blue");
$b2plot->value->Show();

// Create the grouped bar plot
$gbplot = new AccBarPlot(array($b1plot,$b2plot));

// ...and add it to the graPH
$graph->Add($gbplot);
//设置标题字体样式
$graph->title->Set(iconv("UTF-8","GB2312//IGNORE","网志博客信息统计表"));
$graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","X-标题"));
$graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","Y-标题"));

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->Stroke();

当然了,我这里只介绍了一种方法,还有一种就是修改源码,但不推荐。因为我觉得改动源码可能会给其它地方带来意想不到的麻烦。

使用JpGraph,要知道其版本、运行服务器以及操作系统的息息,不能张冠李戴,否则麻烦多多。

好了,至此JpGraph使用介绍也就这么多了。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件 , new , 代码 , array 图表 jpgraph 中文乱码、jpgraph4.0.1中文乱码、cmd中文乱码解决方法、jpgraph乱码、php jpgraph 乱码,以便于您获取更多的相关知识。

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

开发者常用软件,超百款实用软件一站式提供