在前面的JpGraph使用详解这篇文章,已经对JpGraph的使用方法作了详细的交代,前面说好的,接下来解决中文乱码。

JpGraph为什么会出现中文乱码

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

解决中文乱码

取前篇的代码片断如下

1 //设置图表的标题字体、大小
2 $graph->title->Set("Accumulated bar plots");
3 $graph->xaxis->title->Set("X-title");
4 $graph->yaxis->title->Set("Y-title");
5  
6 //和上面标题对应,设置标题的字体和大小
7 $graph->title->SetFont(FF_FONT1,FS_BOLD);
8 $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
9 $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

把它改为

1 //设置图表的标题字体、大小
2 $graph->title->Set(iconv("UTF-8","GB2312//IGNORE","网志博客信息统计表"));
3 $graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","X-标题"));
4 $graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","Y-标题"));
5  
6 //和上面标题对应,设置标题的字体和大小
7 $graph->title->SetFont(FF_SIMSUN,FS_BOLD);
8 $graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
9 $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也表示中文但是它们对应的字体文件是不同的,所以不要弄错。

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

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

01 require_once ('jpgraph/jpgraph.php');
02 require_once ('jpgraph/jpgraph_bar.php');
03  
04 $data1y=array(0,8,9,3,5,6);
05 $data2y=array(18,2,1,7,5,4);
06  
07 // Create the graph. These two calls are always required
08 $graph = new Graph(500,400);
09 $graph->SetScale("textlin");
10  
11 $graph->SetShadow();
12 $graph->img->SetMargin(40,30,20,40);//设置图形的边距
13  
14 // Create the bar plots
15 $b1plot = new BarPlot($data1y);
16 $b1plot->SetFillColor("orange");
17 $b1plot->value->Show();
18 $b2plot = new BarPlot($data2y);
19 $b2plot->SetFillColor("blue");
20 $b2plot->value->Show();
21  
22 // Create the grouped bar plot
23 $gbplot = new AccBarPlot(array($b1plot,$b2plot));
24  
25 // ...and add it to the graPH
26 $graph->Add($gbplot);
27 //设置标题字体样式
28 $graph->title->Set(iconv("UTF-8","GB2312//IGNORE","网志博客信息统计表"));
29 $graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","X-标题"));
30 $graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","Y-标题"));
31  
32 $graph->title->SetFont(FF_SIMSUN,FS_BOLD);
33 $graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
34 $graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
35  
36 $graph->Stroke();

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

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

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

JpGraph使用详解之中文乱码解决方法的更多相关文章

  1. php mysql 中文乱码解决方法

    本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...

  2. jquery的ajax()函数传值中文乱码解决方法介绍

    jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...

  3. [转]mysql导入导出数据中文乱码解决方法小结

    本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...

  4. Zxing中文乱码解决方法

    Zxing中文乱码解决方法总结 尝试过非常多方法  最后发现此方法解决的乱码最多....... 在百度搜索二维码图片 经过前2页的測试  除开一张图之外  其余都能扫描出结果 假设大家有更好的解决方法 ...

  5. unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8

    在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等 其原因在于,unity本身是 ...

  6. Codeblocks中文乱码解决方法

    odeblocks中文乱码解决方法: 特别提示:出现中文乱码情况才执行以下操作,未出现请勿随意修改!!!! 打开Codeblocks -> 设置 -> 编辑器: 然后点击 Encoding ...

  7. 可遇不可求的Question之导入mysql中文乱码解决方法篇

    可遇不可求的Question之导入mysql中文乱码解决方法篇 先 set names utf8;然后 source c:\1.sql ?

  8. 使用WebLogic时控制台输出中文乱码解决方法

    使用WebLogic时控制台输出中文乱码解决方法 1.找到weblogic安装目录,当前项目配置的domain 2.找到bin下的setDomainEnv.cmd文件 3.打开文件,从文件最后搜索第一 ...

  9. Django 分页查询并返回jsons数据,中文乱码解决方法

    Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ...

随机推荐

  1. Vue.js 源码学习笔记 - 细节

     1. this._eventsCount = { }    这是为了避免不必要的深度遍历: 在有广播事件到来时,如果当前 vm 的 _eventsCount 为 0, 则不必向其子 vm 继续传播该 ...

  2. 几个css问题

    1.中文.英文和数字的表现方式不一样. 中文可以自动换行,英文和数字并不会自动换行,设置强制换行显示.word-wrap:break-word; 2.textarea中输入文字多的情况下,和邻边的in ...

  3. [python] 基于词云的关键词提取:wordcloud的使用、源码分析、中文词云生成和代码重写

    1. 词云简介 词云,又称文字云.标签云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思.常见于博客.微博 ...

  4. HDU 4651 数论 partition 求自然数的拆分数

    别人的解题报告: http://blog.csdn.net/zstu_zlj/article/details/9796087 我的代码: #include <cstdio> #define ...

  5. Linux下载

    免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 下载方法见 http://www.linuxidc.com/Linux/2013 ...

  6. 【转】每天一个linux命令(4):mkdir命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/10/25/2738271.html linux mkdir 命令用来创建指定的名称的目录,要求创建目录的 ...

  7. js ==与===区别(非严格相等与严格相等)

    基本数据类型:number.string.boolean.undefined.null 高级数据类型:object 表格形式比较: 比较的类型 == === 基础类型 不同基础类型间比较," ...

  8. Lock 和 synchronized 的区别

    Lock 和 synchronized 的区别 Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现: synchronized在发生异常时,会 ...

  9. bzoj 3572 [Hnoi2014]世界树——虚树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3572 关于虚树:https://www.cnblogs.com/zzqsblog/p/556 ...

  10. dkhadoop的自然语言处理技术介绍

    这段时间一直在接触学习hadoop方面的知识,所以说对自然语言处理技术也是做了一些了解.网络上关于自然语言处理技术的分享文章很多,今天就给大家分享一下HanLP方面的内容. 自然语言处理技术其实是所有 ...