免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2939 | 回复: 6
打印 上一主题 下一主题

jpgraph中文的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-04 16:01 |只看该作者 |倒序浏览
利用设置字体的方式解决中文乱码问题后,发现legend中以‘0’结尾的字符串,最后一个0无法显示,即‘100’显示为‘10’。
但如果去掉中文字体支持则没有问题。大家有没有碰到过?

论坛徽章:
0
2 [报告]
发表于 2009-01-04 23:16 |只看该作者
可以贴上你的代码看看

论坛徽章:
0
3 [报告]
发表于 2009-01-05 17:35 |只看该作者
也发现了同样的问题,正在看代码。。。。
有人知道吗?

论坛徽章:
0
4 [报告]
发表于 2009-01-06 11:06 |只看该作者
这是一段测试代码
<?php
    define('JPGRAPH_ROOT','./src');
    include(JPGRAPH_ROOT.'/jpgraph.php');
    include(JPGRAPH_ROOT.'/jpgraph_line.php');
    include(JPGRAPH_ROOT.'/jpgraph_bar.php');
   
// Some data

$ydata  = array(11,3, 8,12,5 ,1,9, 13,5,7,10);


// Create the graph. These two calls are always required

$graph  = new Graph(450,300);
$graph->img->SetMargin(40,110,20,40);

// Create the linear plot

$lineplot=new LinePlot($ydata);
$lineplot->SetColor("blue");
$dd='一百100';

$lineplot->SetLegend($dd);
// Add the plot to the graph

$graph->Add( $lineplot);
$graph->SetScale("textlin");
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);
$graph->legend->SetShadow('gray@0.4',1);
$graph->legend->SetFillColor('white');
$graph->legend->SetColor('black','gray');
$graph->legend->Pos(0.02,0.5,"right","center");

$graph->yaxis->HideZeroLabel();
$graph->ygrid->SetFill(true,'#FCFACC','#E1F8FC');
$graph->SetMarginColor('white');
$graph->SetFrame(true,'gray',1);

$graph->Stroke();
?>

论坛徽章:
0
5 [报告]
发表于 2009-01-07 12:49 |只看该作者
有没有人能解决?

论坛徽章:
0
6 [报告]
发表于 2009-01-08 15:00 |只看该作者
再顶一下。

论坛徽章:
0
7 [报告]
发表于 2009-01-13 16:02 |只看该作者
问题找到了。是在jpgraph_gb2312.php中
    function gb2utf8($gb) {
    if( !trim($gb) ) return $gb;
    $utf8='';
    while($gb) {
        if( ord(substr($gb,0,1)) > 127 ) {
        $t=substr($gb,0,2);
        $gb=substr($gb,2);
        $utf8 .= $this->u2utf8($this->codetable[hexdec(bin2hex($t))-0x8080]);
        }
        else {
        $t=substr($gb,0,1);
        $gb=substr($gb,1);
        $utf8 .= $this->u2utf8($t);
        }
    }
    return $utf8;
    }

注意while($gb),由于while('0')在php中为假,所以最后一个0被抛弃了。
将while($gb)改为while($gb!='')即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP