JPGRAPH 本身有编码转换功能啊, 你看看的它的例子或 MANUAL

解决方案 »

  1.   

    jpgraph 只能显示unicode(utf8)编码的汉字.
      

  2.   

    下面两个函数是用来转换中文到utf8的,这两个函数网上也可以找到,不过听多都是错误.
    还需要一个gb2312.txt 文件,自己到晚上找吧.
    显示中文的时候, 用ImageTTFText函数, 其他的函数输出好像也不行.  
    function gb2utf8($gb){
        if(!trim($gb))  return $gb;
        $filename="gb2312.txt";
        $tmp=file($filename);
        $codetable=array();
        while(list($key,$value)=each($tmp))
              $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);    $utf8="";
        while($gb) {
            if (ord(substr($gb,0,1))>127) {
              $this=substr($gb,0,2);
              $gb=substr($gb,2,strlen($gb)-2);
              $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
            }else{
                $this=substr($gb,0,1);
                $gb=substr($gb,1,strlen($gb)-1);
                $utf8.=u2utf8($this);
            }
        }
        return $utf8;
    }function u2utf8($c){
        $str="";
        if ($c < 0x80) {
             $str.=$c;
        } else if ($c < 0x800) {
             $str.=chr(0xC0 | $c>>6);
             $str.=chr(0x80 | $c & 0x3F);
        } else if ($c < 0x10000) {
             $str.=chr(0xE0 | $c>>12);
             $str.=chr(0x80 | $c>>6 & 0x3F);
             $str.=chr(0x80 | $c & 0x3F);
        } else if ($c < 0x200000) {
             $str.=chr(0xF0 | $c>>18);
             $str.=chr(0x80 | $c>>12 & 0x3F);
             $str.=chr(0x80 | $c>>6 & 0x3F);
             $str.=chr(0x80 | $c & 0x3F);
        }
        return $str;
    }