在前面的JpGraph使用详解这篇文章,已经对JpGraph的使用方法作了详细的交代,前面说好的,接下来解决中文乱码。
JpGraph为什么会出现中文乱码
在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。如图所示

解决中文乱码
取前篇的代码片断如下
| 2 | $graph->title->Set("Accumulated bar plots"); | 
 
| 3 | $graph->xaxis->title->Set("X-title"); | 
 
| 4 | $graph->yaxis->title->Set("Y-title"); | 
 
| 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); | 
 
 
 
把它改为
| 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-标题")); | 
 
| 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'); | 
 
| 04 | $data1y=array(0,8,9,3,5,6); | 
 
| 05 | $data2y=array(18,2,1,7,5,4); | 
 
| 07 | // Create the graph. These two calls are always required | 
 
| 08 | $graph= newGraph(500,400); | 
 
| 09 | $graph->SetScale("textlin"); | 
 
| 12 | $graph->img->SetMargin(40,30,20,40);//设置图形的边距 | 
 
| 14 | // Create the bar plots | 
 
| 15 | $b1plot= newBarPlot($data1y); | 
 
| 16 | $b1plot->SetFillColor("orange"); | 
 
| 17 | $b1plot->value->Show(); | 
 
| 18 | $b2plot= newBarPlot($data2y); | 
 
| 19 | $b2plot->SetFillColor("blue"); | 
 
| 20 | $b2plot->value->Show(); | 
 
| 22 | // Create the grouped bar plot | 
 
| 23 | $gbplot= newAccBarPlot(array($b1plot,$b2plot)); | 
 
| 25 | // ...and add it to the graPH | 
 
| 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-标题")); | 
 
| 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); | 
 
 
 
当然了,我这里只介绍了一种方法,还有一种就是修改源码,但不推荐。因为我觉得改动源码可能会给其它地方带来意想不到的麻烦。
使用JpGraph,要知道其版本、运行服务器以及操作系统的息息,不能张冠李戴,否则麻烦多多。
好了,至此JpGraph使用介绍也就这么多了。
												
												
								- php mysql 中文乱码解决方法
		本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ... 
- jquery的ajax()函数传值中文乱码解决方法介绍
		jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ... 
- [转]mysql导入导出数据中文乱码解决方法小结
		本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ... 
- Zxing中文乱码解决方法
		Zxing中文乱码解决方法总结 尝试过非常多方法  最后发现此方法解决的乱码最多....... 在百度搜索二维码图片 经过前2页的測试  除开一张图之外  其余都能扫描出结果 假设大家有更好的解决方法 ... 
- unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8
		在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等 其原因在于,unity本身是 ... 
- Codeblocks中文乱码解决方法
		odeblocks中文乱码解决方法: 特别提示:出现中文乱码情况才执行以下操作,未出现请勿随意修改!!!! 打开Codeblocks -> 设置 -> 编辑器: 然后点击 Encoding ... 
- 可遇不可求的Question之导入mysql中文乱码解决方法篇
		可遇不可求的Question之导入mysql中文乱码解决方法篇 先 set names utf8;然后 source c:\1.sql ? 
- 使用WebLogic时控制台输出中文乱码解决方法
		使用WebLogic时控制台输出中文乱码解决方法 1.找到weblogic安装目录,当前项目配置的domain 2.找到bin下的setDomainEnv.cmd文件 3.打开文件,从文件最后搜索第一 ... 
- Django 分页查询并返回jsons数据,中文乱码解决方法
		Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ... 
随机推荐
	
									- sonarqube 代码检查
			再好的程序员也会出bug,所以代码检查很有必要.今天就出一个简单的检查工具代替人工检查. 参考: http://www.cnblogs.com/qiaoyeye/p/5249786.html 环境及版 ... 
- FMX StringGrid向上滑动自动加载记录(一)
			有时候,做的app还是需要用StringGrid来显示数据,但如果用StringGrid的Livebinding绑定到一个数据集TDataset,当记录超过1000条时,效率非常低,甚至达不到实用状态 ... 
- UITableView简述
			原帖:http://blog.csdn.net/totogo2010/article/details/7642908 Table View简单描述: 在iPhone和其他iOS的很多程序中都会看到Ta ... 
- chrome flash插件地址
			C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\PepperFlash 火狐 
- spring读取propertyes 新方法
			<context:property-placeholder location="classpath:mysql.properties"/> <util:prope ... 
- Texas Instruments matrix-gui-2.0 hacking -- app_description.php
			<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ... 
- FZU OJ 1056 :扫雷游戏
			Problem 1056 扫雷游戏 Accept: 2624    Submit: 6903Time Limit: 1000 mSec    Memory Limit : 32768 KB  Prob ... 
- 定时器setTimeout()的传参方法
			更具体的代码:http://www.cnblogs.com/3body/p/5416830.html // 由于setTimeout()的延迟执行特性,所以在执行的函数中直接使用外部函数的变量是无法获 ... 
- 在VSCode中配置Eslint格式化
			在VSCode中配置Eslint 格式化时使代码保持Eslint语法规范 安装Eslint以及prettier美化插件 在VSCode配置设置项中添加如下代码 { "workbench.co ... 
- frameset的用法
			碰到一个frameset的问题,因为我比较懒,就先从网上拿来一篇基础知识,呵呵,好记性不如烂笔头啊        所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 <FRAMESE ...