JpGraph中文乱码问题

JpGraph是一个PHP的图形类库,可以方便地生成各种柱状图,饼图,折线图等等,而且还可以方便地加文字。但是,中文的情况就稍微麻烦了一点。在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。

除了编码问题,还有就是字体问题。为了试验中文显示,专门拷了一个simsun.ttc过来是,在代码里用FF_SIMSUN就可以正确显示中文,但是如果改用自己设置的FF_CHINESE,也就是uming.ttf,就又乱码了,而且和simsun.ttf乱码时的不一样。 后来发现FF_CHINESE和FF_BIG5是一样,是繁体字体,所以和用FF_SIMSUN的乱码还不一样。

解决以上问题的方法也就是传递正确的中文字符串给JpGraph,所以可以把字符串先转成gb2312的,这样JpGraph就可以正确转换了。当然,这个方法比较麻烦,每次都需要,还可以直接修改jpgraph_ttf.inc.php,我用的是2.2版本的,大概在99到106行之间的:

  1. elseif( $aFF === FF_SIMSUN ) {
  2.         // Do Chinese conversion
  3.         if( $this->g2312 == null ) {
  4.             include_once 'jpgraph_gb2312.php' ;
  5.             $this->g2312 = new GB2312toUTF8();
  6.         }
  7.         return $this->g2312->gb2utf8($aTxt);
  8.     }

注释掉已有代码,直接返回$aTxt:

  1. elseif( $aFF === FF_SIMSUN ) {
  2.         // Do Chinese conversion
  3.         //if( $this->g2312 == null ) {
  4.         //    include_once 'jpgraph_gb2312.php' ;
  5.         //    $this->g2312 = new GB2312toUTF8();
  6.         //}
  7.         //return $this->g2312->gb2utf8($aTxt);
  8.         return $aTxt;
  9.     }  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值