您好,欢迎访问一九零五行业门户网

pChart 图表中文显示问题

项目需要,图表显示数据,个人能力有限,
/* cat:bar chart */ header(content-type:text/html; charset=utf-8); /* pchart library inclusions */ include(class/pdata.class.php); include(class/pdraw.class.php); include(class/pimage.class.php); /* create and populate the pdata object */ $mydata = new pdata(); $mydata->addpoints(array(150,220,300,250,420,200,300,200,100),test); $mydata->setaxisname(0,hits); $mydata->addpoints(array(1月,2月,3月,4月,5月,6月,7月,8月,9月),months); $mydata->setseriedescription(months,month); $mydata->setabscissa(months); /* create the pchart object */ $mypicture = new pimage(700,230,$mydata); /* turn of antialiasing */ $mypicture->antialias = false; /* add a border to the picture */ $mypicture->drawgradientarea(0,0,700,230,direction_vertical,array(startr=>240,startg=>240,startb=>240,endr=>180,endg=>180,endb=>180,alpha=>100)); $mypicture->drawgradientarea(0,0,700,230,direction_horizontal,array(startr=>240,startg=>240,startb=>240,endr=>180,endg=>180,endb=>180,alpha=>20)); $mypicture->drawrectangle(0,0,699,229,array(r=>0,g=>0,b=>0)); /* set the default font */ $mypicture->setfontproperties(array(fontname=>fonts/pf_arma_five.ttf,fontsize=>6)); /* define the chart area */ $mypicture->setgrapharea(60,40,650,200); /* draw the scale */ $scalesettings = array(gridr=>200,gridg=>200,gridb=>200,drawsubticks=>true,cyclebackground=>true); $mypicture->drawscale($scalesettings); /* write the chart legend */ $mypicture->drawlegend(580,12,array(style=>legend_noborder,mode=>legend_horizontal)); /* turn on shadow computing */ $mypicture->setshadow(true,array(x=>1,y=>1,r=>0,g=>0,b=>0,alpha=>10)); /* draw the chart */ $mypicture->setshadow(true,array(x=>1,y=>1,r=>0,g=>0,b=>0,alpha=>10)); $settings = array(surrounding=>-30,innersurrounding=>30); $mypicture->drawbarchart($settings); ob_clean(); //关键代码,防止出现'图像因其本身有错无法显示'的问题。header(content-type: image/png); /* render the picture (choose the best way) */ $mypicture->autooutput(examples/pictures/example.drawbarchart.simple.png);
怎么把 $mydata->addpoints(array(150,220,300,250,420,200,300,200,100),test);的字符串test显示为中文,怎么把 $mydata->setaxisname(0,hits);显示中文,比如 $mydata->setaxisname(0,套);。。
回复讨论(解决方案) 直接中文写上去不行吗?
直接中文写上去不行吗?
不行啊,直接什么都没有。
注释掉 header(content-type:text/html; charset=utf-8);
注释掉 header(content-type:text/html; charset=utf-8);
我开始没有的,然后后面加上去的,也没用啊,这不是乱码,只是不显示啊。。
是最新版的吗?
待会下一个看看
1、header 是不要的,因为你是以图片方式输出
2、你选用的字体是西文字体,没有汉字当然不能显示,你需要选一款中文字体
3、如果你的程序不是utf-8的,那么所有要输出的汉字都必须转成utf-8的
是最新版的吗?
待会下一个看看
是啊,是最新的,老版本也是这个问题,所以我索性用最新版本的了。谢谢老徐。。我在跟源码,慢慢研究。。求点拨
1、header 是不要的,因为你是以图片方式输出
2、你选用的字体是西文字体,没有汉字当然不能显示,你需要选一款中文字体
3、如果你的程序不是utf-8的,那么所有要输出的汉字都必须转成utf-8的
你选用的字体是西文字体,没有汉字当然不能显示,你需要选一款中文字体,就是我这个选错啦?$mypicture->setfontproperties(array(fontname=>fonts/pf_arma_five.ttf,fontsize=>6));我改改去。。
1、header 是不要的,因为你是以图片方式输出
2、你选用的字体是西文字体,没有汉字当然不能显示,你需要选一款中文字体
3、如果你的程序不是utf-8的,那么所有要输出的汉字都必须转成utf-8的
该用哪种字体呢?我用其他字体文件就是显示乱码,我定义了文体编码,没用,然后也用转码函数,也没用,怎么回事呢!?
假定你的服务器是 windows 系统,且程序是 gbk 编码的 function bm($ar) { if(! is_array($ar)) return iconv('gbk', 'utf-8', $ar); foreach($ar as &$v) $v = iconv('gbk', 'utf-8', $v); return $ar;} /* cat:bar chart */ /* pchart library inclusions */ include(plugin/pchart2.1.4/class/pdata.class.php); include(plugin/pchart2.1.4/class/pdraw.class.php); include(plugin/pchart2.1.4/class/pimage.class.php); /* create and populate the pdata object */ $mydata = new pdata(); $mydata->addpoints(array(150,220,300,250,420,200,300,200,100), bm(测试)); $mydata->setaxisname(0, bm(套)); $mydata->addpoints(bm(array(1月,2月,3月,4月,5月,6月,7月,8月,9月)),months); $mydata->setseriedescription(months,month); $mydata->setabscissa(months); /* create the pchart object */ $mypicture = new pimage(700,230,$mydata); /* turn of antialiasing */ $mypicture->antialias = false; /* add a border to the picture */ $mypicture->drawgradientarea(0,0,700,230,direction_vertical,array(startr=>240,startg=>240,startb=>240,endr=>180,endg=>180,endb=>180,alpha=>100)); $mypicture->drawgradientarea(0,0,700,230,direction_horizontal,array(startr=>240,startg=>240,startb=>240,endr=>180,endg=>180,endb=>180,alpha=>20)); $mypicture->drawrectangle(0,0,699,229,array(r=>0,g=>0,b=>0)); /* set the default font */ $mypicture->setfontproperties(array(fontname=>c:/windows/fonts/simhei.ttf,fontsize=>6)); /* define the chart area */ $mypicture->setgrapharea(60,40,650,200); /* draw the scale */ $scalesettings = array(gridr=>200,gridg=>200,gridb=>200,drawsubticks=>true,cyclebackground=>true); $mypicture->drawscale($scalesettings); /* write the chart legend */ $mypicture->drawlegend(580,12,array(style=>legend_noborder,mode=>legend_horizontal)); /* turn on shadow computing */ $mypicture->setshadow(true,array(x=>1,y=>1,r=>0,g=>0,b=>0,alpha=>10)); /* draw the chart */ $mypicture->setshadow(true,array(x=>1,y=>1,r=>0,g=>0,b=>0,alpha=>10)); $settings = array(surrounding=>-30,innersurrounding=>30); $mypicture->drawbarchart($settings); ob_clean(); //关键代码,防止出现'图像因其本身有错无法显示'的问题。header(content-type: image/png); /* render the picture (choose the best way) */ $mypicture->autooutput(examples/pictures/example.drawbarchart.simple.png);
其它类似信息

推荐信息