在前面的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 = new Graph(500,400); |
09 |
$graph ->SetScale( "textlin" ); |
12 |
$graph ->img->SetMargin(40,30,20,40); //设置图形的边距 |
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(); |
22 |
// Create the grouped bar plot |
23 |
$gbplot = new AccBarPlot( 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- ...
随机推荐
- kmp算法中的nextval实例解释
求nextval数组值有两种方法,一种是不依赖next数组值直接用观察法求得,一种方法是根据next数组值进行推理,两种方法均可使用,视更喜欢哪种方法而定. 本文主要分析nextval数组值的第二种方 ...
- koa 框架 介绍 -- 待续
对比 express 更小 更健壮 解决繁琐的回调函数嵌套, 并极大地提升错误处理的效率 Koa 的核心设计思路是为中间件层 提供高级语法糖封装, (其实就是用了 ES6的生成器, 能中断函数的执 ...
- sprintf 函数
//$tick 保留{$decimalplaces}位小数,不够位数的小数点后面用0 填充$tick = sprintf( "%.0${decimalplaces}lf ", $i ...
- nw 系统托盘的添加方式,以及ajax失效问题
1.nw 系统托盘的添加方式 /** ------------------------------------------------------------ 最小化托盘 -------------- ...
- 转:window.orientation判断移动设备横屏竖屏
通过window.orientation来判断设备横竖屏 function checkOrient() { if (window.orientation == 0 || window.orientat ...
- Object-C 基础笔记4---ARC内存管理
内存管理的原则 1,对你自己拥有的对象负责.你只能释放自己拥有的对象.(谁污染谁治理). 2,凡是通过retain,alloc,copy等于段获得了所有权对象,都必须在你不再使用的时候释放.调用rel ...
- proxool配置及测试(数据库用的MySQL)
Proxool连接池设置 Proxool连接池是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况. ...
- ODBC的基础架构
*) 基本概念:1. 应用程序(Application)2. ODBC驱动管理器(ODBC Driver Manager) 负责管理应用程序和驱动程序间的通信,主要功能包括:解析DSN (数据源名称, ...
- opencv-python教程学习系列12-图像阈值
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像阈值/二值化,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 ...
- 原型设计 Axure8.1 软件注册码
用户名:Koshy 注册码: wTADPqxn3KChzJxLmUr5jTTitCgsfRkftQQ1yIG9HmK83MYSm7GPxLREGn+Ii6xY